Python Django進階教程(四)(通用檢視)

HuangZhang_123發表於2017-05-12

Django版本:1.11
作業系統:Windows
Python:3.5
歡迎加入學習交流QQ群:657341423


這章介紹通用檢視,這個通用檢視主要在views.py裡面編寫和定義的。
通用檢視,主要作用就是快捷地將資料庫資料呈現出網頁上。
假設,我要在www.xxx.com/bookInfomation/顯示一個表單,裡面顯示的是書包資訊,然後表單下面是一些操作按鈕等。
分析:針對這個網頁,第一個生成1個table是用於顯示資料的,第二個要生成1個表單()是用於按鈕操作的。
第二個是form,這個可以參考Python Django基礎教程(五)
第一個生成1個table的,可以用之前的方法,就是在views.py定義一個def,然後render_to_response或者render返回。基本上這是萬能的方法。
此外還有一種比較簡化的方法,這個就簡化了程式碼冗餘,可以小的程式碼實現table生成,這也就是通用檢視

通用檢視常用分為TemplateView、ListView和DetailView
TemplateView:可以方便的定義要返回的模板但它不能把資料庫中的內容查詢展示出來
如果設計到資料庫資料,則ListView和DetailView。
ListView和DetailView有區別。ListView 用來獲取某個 model 中的所有資料,而 DetailView 則是獲取每個資料的詳細資訊。

ListView詳解:
views.py
這裡寫圖片描述
template_name指定那一個html檔案。
context_object_name是html裡面的變數名。
get_queryset函式確定變數的值。如果取消註釋#model = Publisher,去除這個方法,預設全部值。具體看圖中註釋。
get_context_data是查詢另外資料表的資料的。註釋的程式碼和沒有註釋實現功能一樣的。

urls.py
這裡寫圖片描述
寫url的時候,記得import models即可。
PublisherList.as_view():PublisherList為views.py的類名。.as_view()是必需的。

html
這裡寫圖片描述
如果要其他資料,可以這樣寫:

<li>{{ publisher.city}}</li>

執行結果:
這裡寫圖片描述

擴充套件:
因為我這個PublisherList預設是filter篩選條件的,如果要更換條件的話,可以這樣做:
urls.py
這裡寫圖片描述
publisher/後面帶引數來確定最終url

views.py
這裡寫圖片描述

例項:
結合上述url帶引數方法,如果我在form裡面的實現了一個post或者get,然後跳到對應views.py
的方法,可以用:即在網頁上輸入查詢條件,然後點選確定按鈕後,可以用重定向方法,跳轉到指定通用檢視的url上,將條件作為url的一部分,實現篩選和查詢。

return HttpResponseRedirect('/polls/publisher/'+name+'/')

重定向跳到查詢後的表格。


DetailView詳解:
urls.py
這裡寫圖片描述

views.py
這裡寫圖片描述
原理和ListView大同小異。

html:
這裡寫圖片描述
唯獨注意的是,紅色框的寫法和ListView不一樣的。
get_context_data額外增加的資料和ListView一樣的。因為get_context_data裡面的程式碼一樣的。

執行結果
這裡寫圖片描述
注意,這裡紅色內容,是引數,DetailView會根據這個引數去選擇資料庫那條資料的。


總結:通用檢視實現的功能,基本上可以基礎教程裡面的方法實現的。而通用檢視的最重要作用就是減小開發者的程式碼量。


進階教程程式碼:請點選

相關文章