在了解了如何使用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() 方法渲染包含给定模板的帖子列表。
注意到目前为止,我们只写了视图,下面还需要添加路径和视图模板,这部分本人将在明天进行更新。感谢支持。