Python Web开发:新闻动态

来自CloudWiki
Cloud17讨论 | 贡献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,
    })