1 我們在用Django編程時,會發(fā)現(xiàn),經(jīng)常需要用到列表、詳情、修改這些操作。這些操作幾乎可以滿足數(shù)據(jù)編輯的大部分要求。那能不能像YII2腳手架功能一樣直接提供一個通用的模板類,只需指定幾個必要的參數(shù),所有的功能自己去實現(xiàn)呢。
2 Python/ target=_blank class=infotextkey>Python 語言Django 框架,剛好提供這樣的功能,它有很多叫法,如 類視圖、通用視圖、簡化視圖,都指的是它。我們可以把它看成Django 框架的腳手架。
3 Django簡化視圖底層的本質(zhì)是通過從URL傳遞過來的參數(shù)去數(shù)據(jù)庫查詢數(shù)據(jù),加載一個模板,利用得到的數(shù)據(jù)渲染模板(按照路由、視圖、模板、模型的路線圖)。
4 以下是Django 框架提供的簡化視圖,可以直接拿來使用。
View ------------------- 所有類視圖的基類
TemplateView --------------渲染一個template
RedirectView ----------------重定向類視圖
? 通用顯示視圖Display view:
? DetailView ---------------展示單個object
? ListView ------------------展示多個object
? 通用編輯視圖Edit view:
? FormView -------------- 顯示一個form表單
? CreateView ------------ 創(chuàng)建一個對象
? UpdateView ------------更新對象
? DeleteView --------------刪除對象
5 例,路由代碼
path('', views.IndexView.as_view(), name='index'),
視圖代碼
class IndexView(generic.ListView):
template_name = 'polls/index.html'
context_object_name = 'latest_question_list'
def get_queryset(self):
return Question.objects.order_by('-pub_date')[:5]
6 小貼士 6-1通用視圖實際上是類視圖的一種,Django類視圖的完整架構(gòu)還是很龐大的。筆者只是提綱挈領(lǐng),有興趣可以試著搜索“使用Django通用視圖的get_queryset, get_context_data和get_object等方法”深入學(xué)習(xí)。
6-2 筆者在看一些程序員在做php后臺維護(hù)時,數(shù)據(jù)庫經(jīng)常被SQL注入,其實簡單點使用addslashes()函數(shù)就能解決大部分問題。