Django构建列表和详细视图

在了解了如何使用ORM后,即可着手准备构建你们的应用程序视图(这里本人以博客为例)。Django视图仅表示为一个Python函数,接收 Web 请求并返回一个 Web 响应。另外,返回响应结果的全部逻辑均位于视图中。

首先,需要创建应用程序视图,并于随后针对每个视图定义URL。最后,还需要创建HTML 模板,以渲染视图所生成的数据。其中,每个视图将渲染一个模板(向其中传递变量),并返回包含渲染输出结果的 HTTP 响应。

生成列表和视图

下面开始创建视图以显示帖子列表。编辑 blog 应用程序的 views.py 文件,如下所示:

from django.shortcuts import render, get_object_or_404
from .models import Post

def post_list(request, tag_slug=None):
    posts = Post.objects.all()
    return render(request, 'blog/post/list.html', {'posts': posts})

上述代码创建了第一个Django视图。具体来说,post_list 视图接收 request 对象作为唯一参数。需要注意的是,全部视图都需要使用到该参数。在当前视图中,将利用objects 管理器检索包含objects 状态的所有帖子。最后使用Django 提供的 render() 方法渲染包含给定模板的帖子列表。

下面创建第二个视图并显示独立的帖子。对此,可向 views.py 文件下添加下列函数:

def post_detail(request, year, month, day, post):
    post = get_object_or_404(Post, slug=post,
                             status='published',
                             publish__year=year,
                             publish__month=month,
                             publish__day=day)
    return render(request, 'blog/post/detail.html', {'post': post})

作为帖子详情视图,该视图接收year、month、day以及post 作为参数,并检索包含既定 slug 和日期的发布帖子。最后使用Django 提供的 render() 方法渲染包含给定模板的帖子列表。

 

注意到目前为止,我们只写了视图,下面还需要添加路径和视图模板,这部分本人将在明天进行更新。感谢支持。

 

posted @ 2021-01-13 20:11  Erudite  阅读(229)  评论(0编辑  收藏  举报