在瞭解瞭如何使用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