Python Django進階教程(四)(通用檢視)
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
例項:
結合上述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會根據這個引數去選擇資料庫那條資料的。
總結:通用檢視實現的功能,基本上可以基礎教程裡面的方法實現的。而通用檢視的最重要作用就是減小開發者的程式碼量。
相關文章
- Django進階之路由層和檢視層Django路由
- Django REST framework API 指南(4):通用檢視DjangoRESTFrameworkAPI
- 進階剖析django通用類UpdateView(2張圖)DjangoView
- Django 檢視層Django
- Django檢視層Django
- Django 進階之 celeryDjango
- Django進階之路(一)Django
- django的檢視層Django
- Django - 探究FBV 檢視Django
- Django之檢視層Django
- python-進階教程-對切片進行命名Python
- Python進階教程5——物件導向Python物件
- Python 從入門到進階之路(四)Python
- Django檢視之檢視類和中介軟體Django
- 【6】Django檢視函式Django函式
- Django框架之檢視層Django框架
- Django的檢視和模板Django
- [Django框架之檢視層]Django框架
- python教程12-物件導向進階Python物件
- Python3影片零基礎進階高階運維Django爬蟲專案實戰2017全套教程Python運維Django爬蟲
- RobotFramework + Python 自動化入門 四 (Web進階)FrameworkPythonWeb
- Django(27)Django類檢視新增裝飾器Django
- python-進階教程-使用物件屬性進行排序Python物件排序
- django 的類檢視和函式檢視-雜談Django函式
- Django - 檢視層 - 檢視函式及快捷方式Django函式
- 《Microsoft Word》進階技巧:如何設定文件檢視ROS
- Django2.1視訊教程Django
- 選擇使用通用檢視(Generic Views)或檢視集(ViewSets)View
- Python 資料處理庫 pandas 進階教程Python
- [Django REST framework - 檢視元件之檢視基類、檢視擴充套件類、檢視子類、檢視集]DjangoRESTFramework元件套件
- SSM視訊教程:Java進階SSM分散式專案實戰視訊教程SSMJava分散式
- 電腦怎麼檢視windows版本 檢視電腦windows幾的四種方法教程Windows
- Rust 程式設計視訊教程(進階)——022 模式Rust程式設計模式
- Rust 程式設計視訊教程(進階)——002 traitRust程式設計AI
- Arthas 進階教程
- React 進階之路(四)React
- Rust 程式設計視訊教程(進階)——027_1 高階特性Rust程式設計
- ElasticSearch進階檢索Elasticsearch
- Python進階Python