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

相關文章
相關標籤/搜索