“Python Web开发:新闻动态”的版本间的差异

来自CloudWiki
跳转至: 导航搜索
第30行: 第30行:
  
 
===修改视图函数===
 
===修改视图函数===
 +
homeApp/views.py:
 +
 +
<nowiki>
 +
def home(request):
 +
    # 新闻展报
 +
    newList = MyNew.objects.all().filter(~Q(
 +
        newType='通知公告')).order_by('-publishDate')
 +
    postList = set()
 +
    postNum = 0
 +
    for s in newList:
 +
        if s.photo:
 +
            postList.add(s)
 +
            postNum += 1
 +
        if postNum == 3:  # 只截取最近的3个展报
 +
            break
 +
 +
    # 新闻列表
 +
    if (len(newList) > 7):
 +
        newList = newList[0:7]
 +
 +
    # 返回结果
 +
    return render(request, 'home.html', {
 +
        'active_menu': 'home',
 +
        'postList': postList,
 +
        'newList': newList,
 +
    })
 +
</nowiki>

2021年6月7日 (一) 06:43的版本

背景

“新闻动态”分为左右两个部分,

左边是展报,右边是新闻列表

展报部分以图片形式吸引读者

列表部分 显示“新闻动态”模块的列表信息

实训步骤

修改数据模型

为了能够实现展报功能,

需要为“新闻”模型添加一个额外的图片字段用于存储海报。

newsApp/models.py:

photo = models.ImageField(upload_to='news/',
                              blank=True,
                              null=True,
                              verbose_name='展报')

同步数据库:

python manage.py makemigrations

python manage.py migrate

修改视图函数

homeApp/views.py:

def home(request):
    # 新闻展报
    newList = MyNew.objects.all().filter(~Q(
        newType='通知公告')).order_by('-publishDate')
    postList = set()
    postNum = 0
    for s in newList:
        if s.photo:
            postList.add(s)
            postNum += 1
        if postNum == 3:  # 只截取最近的3个展报
            break

    # 新闻列表
    if (len(newList) > 7):
        newList = newList[0:7]

    # 返回结果
    return render(request, 'home.html', {
        'active_menu': 'home',
        'postList': postList,
        'newList': newList,
    })