Django构建列表和详细视图

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

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

生成列表和视图

下面开始建立视图以显示帖子列表。编辑 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() 方法渲染包含给定模板的帖子列表。post

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

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() 方法渲染包含给定模板的帖子列表。code

 

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

相关文章
相关标签/搜索