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會根據這個引數去選擇資料庫那條資料的。
總結:通用檢視實現的功能,基本上可以基礎教程裡面的方法實現的。而通用檢視的最重要作用就是減小開發者的程式碼量。
相關文章
- Python Django進階教程(一)(高階檢視和URL配置)PythonDjango
- Django教程(二)- Django檢視與網址進階Django
- Django進階之路由層和檢視層Django路由
- Python Django進階教程(三)(模型的高階用法)PythonDjango模型
- 進階剖析django通用類UpdateView(2張圖)DjangoView
- Python Django進階教程(五)(session,Django使用者認證)PythonDjangoSession
- Django REST framework API 指南(4):通用檢視DjangoRESTFrameworkAPI
- Django教程(一) Django檢視與網址Django
- Python Django進階教程(六)(快取機制,CSRF)PythonDjango快取
- Python Django進階教程(二)(模版過濾器,標籤)PythonDjango過濾器
- Django初級手冊4-表單與通用檢視Django
- Python Django進階教程(七)(部署,ajax通訊以及檔案上存)PythonDjango
- Django 檢視層Django
- Django檢視層Django
- Django進階之路(一)Django
- Django 進階之 celeryDjango
- Python進階教程01 詞典Python
- django的檢視層Django
- Django之檢視層Django
- Django:路由與檢視Django路由
- Python Django基礎教程(四)(admin站點管理)PythonDjango
- python教程 - 檢視python的可用模組Python
- python-進階教程-對切片進行命名Python
- Python進階教程5——物件導向Python物件
- Python 快速教程(進階篇03):模組Python
- Python 從入門到進階之路(四)Python
- Django的檢視和模板Django
- [Django框架之檢視層]Django框架
- 【6】Django檢視函式Django函式
- Django - 探究FBV 檢視Django
- Django框架之檢視層Django框架
- Django檢視之檢視類和中介軟體Django
- Django2.1視訊教程Django
- Django(27)Django類檢視新增裝飾器Django
- 《Microsoft Word》進階技巧:如何設定文件檢視ROS
- Python 快速教程(進階篇01): 詞典Python
- python教程12-物件導向進階Python物件
- RobotFramework + Python 自動化入門 四 (Web進階)FrameworkPythonWeb