目錄
類別檢視
ListView

類別視圖

Jun 23, 2017 pm 04:30 PM
視圖

 

類別檢視

#使用原則
  • 程式碼越少越好

  • 永遠不要重複程式碼

  • View應只包含呈現邏輯, 不應包含業務邏輯

  • 保持view邏輯清晰簡單

  • 不要將CBVs用作403, 404, 500的錯誤處理程序

  • 。 mixin簡單明了

 
 
mixin
##在程式設計中mixin是指為繼承它的class提供額外的功能, 但它本身卻不能單獨使用的類別
在具有多繼承能力的程式語言中, mixin可以為類別增加額外功能或方法. 在Django中, 我們可以使用mixin為CBVs提供更多的擴展性, 當然在類別繼承過程中, 我們推薦以下原則:
  • #Django本身提供的View永遠在最右邊

  • mixin依序在上述view的左邊

  • #mixin永遠繼承自Python的object類型

Django mixin函式庫:
 
 
#常用的類別檢視
View                    基本View 可以在任何时候使用 见后面详细介绍
RedirectView            重新定向到其他URL 将访问"/log-in/"的用户重新定向到"/login/"TemplateView            显示Django 模板 一般网站中使用模板显示的页
ListView                显示对象列表 文章列表页
DetailView              显示对象详情 文章详细页
FormView                提交From 网站联系我们或emai订阅form
CreateView              创建对象 创建新文章页
UpdateView              更新对象 修改文章页
DeleteView              删除对象 删除文章页
Generic date views      显示一段时间内的对象 按时间归类的博客
登入後複製

 

#View

django.views.generic.base.View
基於類別的基礎視圖的核心。其它所有的基於類別的視圖都繼承自這個基礎類別。
 
 django.shortcuts  django.views.generic state =http_method_names = [, , , , , , ,  dispatch(self, request, *args, **(= super(Index,self).dispatch(request, *args, **( HttpResponse( HttpResponse()
登入後複製
 
## 
TemplateView

從下列視圖繼承方法與屬性
  1. ##django

    .views<span class="pln">.<span class="pun">generic<span class="pln">.<span class="pun">base<span class="kwd">.<span class="pun">TemplateResponseMixin<span class="pln"><span class="pun"><span class="typ"></span></span></span></span></span></span></span></span></span>

  2. ##django

    .views<span class="pln">.<span class="pun">generic<span class="pln">.<span class="pun">base<span class="kwd">.<span class="pun">ContextMixin<span class="pln"><span class="pun"><span class="typ"></span></span></span></span></span></span></span></span></span>

  3. <span class="pln"><span class="pun"><span class="pln"><span class="pun"><span class="kwd"><span class="pun"><span class="pln"><span class="pun"><span class="typ"></span></span></span></span></span></span></span></span></span>

django
.
views
.

generic

.
base
.
View

  1. <span class="pln"><span class="pun"><span class="pln"> <span class="pun"><span class="kwd">範例<span class="pun"><span class="pln"><span class="pun"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false"> django.views.generic.base =  dispatch(self, request, *args, **(= super(HomePageView,self).dispatch(request, *args, **( get_context_data(self, **= super(HomePageView, self).get_context_data(**] = [,,( context</pre><div class="contentsignin">登入後複製</div></div> <span class="typ"></span> </span></span></span> </span>## </span></span></span></span>

# #RedirectView
從下列視圖繼承方法與屬性:

django

.views<span class="typ">.<span class="pun">generic<span class="pln">.<span class="pun">base<span class="pln">.<span class="pun">View</span></span></span></span></span></span>

############# ###############
 django.views.generic.base == False  query_string = True  pattern_name =    dispatch(self, request, *args, **(= super(ArticleRedirectView,self).dispatch(request, *args, **( get_redirect_url(self, *args, **( super(ArticleRedirectView, self).get_redirect_url(*args, **kwargs)
登入後複製
###### ############ ############# ######### ###### ###### # ###### ######DetaliView#############DetailView###是對這些出版商的諸多的###object###中的一個進行詳細解析,它獲得的主資料是一個###object###。 ##################################從下列視圖繼承方法和屬性:######
  1. <span class="pln">django<span class="pun">.<span class="pln">views<span class="pun">.<span class="pln">generic<span class="pun">.<span class="pln">detail<span class="pun">.<span class="typ">SingleObjectTemplateResponseMixin</span></span></span></span></span></span></span></span></span>

  2. <span class="pln">django<span class="pun">.<span class="pln">views<span class="pun">.<span class="pln">generic<span class="pun">.<span class="pln">base<span class="pun">.<span class="typ">TemplateResponseMixin</span></span></span></span></span></span></span></span></span>

  3. <span class="pln">django<span class="pun">.<span class="pln">views<span class="pun">.<span class="pln">generic<span class="pun">.<span class="pln">detail<span class="pun">.<span class="typ">BaseDetailView</span></span></span></span></span></span></span></span></span>

  4. <span class="pln">django<span class="pun">.<span class="pln">views<span class="pun">.<span class="pln">generic<span class="pun">.<span class="pln">detail<span class="pun">.<span class="typ">SingleObjectMixin</span></span></span></span></span></span></span></span></span>

  5. <span class="pln">django<span class="pun">.<span class="pln">views<span class="pun">.<span class="pln">generic<span class="pun">.<span class="pln">base<span class="pun">.<span class="typ">View</span></span></span></span></span></span></span></span></span>

 
示例
 django.contrib.auth.mixins  chouti.models ==   pk_url_kwarg =   

 get_context_data(self, **(context = super(UserDetailView, self).get_context_data(**] = [33, 44]
登入後複製

 

 

ListView

对于ListView来说,它需要显示的是多个object的信息,返回的是一个对象列表
它的数据来源是model和queryset这两个属性:
  1. <span class="pln">model<span class="pun">:获取这个<span class="pln">model<span class="pun">相关的所有数据</span></span></span></span>

  2. <span class="pln">queryset<span class="pun">:从这个<span class="pln">queryset<span class="pun">中获取指定的数据。</span></span></span></span>

  3. <span class="pln">queryset<span class="pun">的优先级高于<span class="pln">model</span></span></span>

  4. <span class="pun">它所获取的数据是通过<span class="pln">context<span class="pun">中<span class="pln">object_list<span class="pun">这个变量来传递的</span></span></span></span></span>

 
 
从以下视图继承方法和属性:
  1. <span class="pln">django<span class="pun">.<span class="pln">views<span class="pun">.<span class="pln">generic<span class="pun">.<span class="pln">list<span class="pun">.<span class="typ">MultipleObjectTemplateResponseMixin</span></span></span></span></span></span></span></span></span>

  2. <span class="pln">django<span class="pun">.<span class="pln">views<span class="pun">.<span class="pln">generic<span class="pun">.<span class="pln">base<span class="pun">.<span class="typ">TemplateResponseMixin</span></span></span></span></span></span></span></span></span>

  3. <span class="pln">django<span class="pun">.<span class="pln">views<span class="pun">.<span class="pln">generic<span class="pun">.<span class="pln">list<span class="pun">.<span class="typ">BaseListView</span></span></span></span></span></span></span></span></span>

  4. <span class="pln">django<span class="pun">.<span class="pln">views<span class="pun">.<span class="pln">generic<span class="pun">.<span class="pln">list<span class="pun">.<span class="typ">MultipleObjectMixin</span></span></span></span></span></span></span></span></span>

  5. <span class="pln">django<span class="pun">.<span class="pln">views<span class="pun">.<span class="pln">gen</span></span></span></span></span>

 
 
示例
 blog.models  django.views.generic model = Post   queryset = Post.objects.filter(title__contains = )  context_object_name =   template_name=   ( Post.objects.filter(title__contains = self.kwargs[ get_context_data(self, **(= super(PublisherList, self).get_context_data(**kwargs)  context[] = [, ]    context
登入後複製

 

 
 

以上是類別視圖的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它們
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

iOS 17 的待機模式將正在充電的 iPhone 變成家庭集線器 iOS 17 的待機模式將正在充電的 iPhone 變成家庭集線器 Jun 06, 2023 am 08:20 AM

iOS17中的Apple正在引入待機模式,這是一種新的顯示體驗,專為水平方向的充電iPhone而設計。處於這個位置的iPhone能夠顯示一系列全螢幕小部件,將其變成一個有用的家庭中心。待機模式會在水平放置在充電器上執行iOS17的iPhone上自動啟動。您可以查看時間、天氣、日曆、音樂控制、照片等資訊。您可以透過可用的待機選項向左或向右滑動,然後長按或向上/向下滑動以進行自訂。例如,隨著時間的流逝,您可以從類比視圖、數位視圖、氣泡字體和日光視圖中進行選擇,其中背景顏色會根據時間而變化。有一些選項

如何在Vue中實作可編輯的表格 如何在Vue中實作可編輯的表格 Nov 08, 2023 pm 12:51 PM

在許多Web應用程式中,表格是必不可少的一個元件。表格通常具有大量數據,因此表格需要一些特定的功能來提高使用者體驗。其中一個重要的功能是可編輯性。在本文中,我們將探討如何使用Vue.js實作可編輯的表格,並提供具體的程式碼範例。步驟1:準備資料首先,我們需要為表格準備資料。我們可以使用JSON物件來儲存表格的數據,並將其儲存在Vue實例的data屬性中。在本例中

理解SpringBoot和SpringMVC之間的差異及比較 理解SpringBoot和SpringMVC之間的差異及比較 Dec 29, 2023 am 09:20 AM

對比SpringBoot與SpringMVC,了解它們的差異隨著Java開發的不斷發展,Spring框架已經成為了許多開發人員和企業的首選。在Spring的生態系中,SpringBoot和SpringMVC是兩個非常重要的組件。雖然它們都是基於Spring框架的,但在功能和使用方式上卻有一些區別。本文將聚焦在SpringBoot與Sprin

php如何使用CodeIgniter4框架? php如何使用CodeIgniter4框架? May 31, 2023 pm 02:51 PM

PHP是一種非常流行的程式語言,而CodeIgniter4是一種常用的PHP框架。在開發Web應用程式時,使用框架是非常有幫助的,它可以加速開發過程、提高程式碼品質、降低維護成本。本文將介紹如何使用CodeIgniter4框架。安裝CodeIgniter4框架CodeIgniter4框架可以從官方網站(https://codeigniter.com/)下載。下

Laravel開發:如何使用Laravel View產生視圖? Laravel開發:如何使用Laravel View產生視圖? Jun 14, 2023 pm 03:28 PM

Laravel是目前最受歡迎的PHP框架之一,其強大的視圖生成能力是令人印象深刻的一點。視圖是Web應用程式中展示給使用者的頁面或視覺元素,其中包含HTML、CSS和JavaScript等程式碼。 LaravelView允許開發者使用結構化的模板語言來建立網頁,同時透過控制器和路由產生相應的視圖。在本文中,我們將探討如何使用LaravelView產生視圖。一、什

Word視圖有哪幾種 Word視圖有哪幾種 Mar 19, 2024 pm 06:10 PM

我猜想,很多同學都想學習word的排版技巧,但小編偷偷告訴大家,在學習排版技巧之前需要先了解清楚word視圖,在Word2007中提供了5種視圖供用戶選擇,這5種視圖包括頁面視圖、閱讀版視圖、Web版視圖、大綱視圖和普通視圖,今天就和小編了解這5種word視圖吧。 1.頁面視圖頁面視圖可以顯示Word2007文件的列印結果外觀,主要包括頁首、頁尾、圖形物件、分欄設定、頁面邊距等元素,是最接近列印結果的頁面視圖。 2.閱讀版視圖閱讀版視圖以圖書的分欄樣式顯示Word2007文檔,Office

Django框架中的視圖詳解 Django框架中的視圖詳解 Jun 17, 2023 am 10:18 AM

Django是一個高度可自訂的網路框架,它提供了許多方便的工具和程式庫,來幫助開發者快速創建高效能的、可擴展的網路應用程式。其中,視圖是Django框架中最重要的組成部分之一。視圖負責處理來自客戶端的請求,並傳回相應的回應。在本文中,我們將深入探討Django框架中的視圖,並介紹如何使用它來創建高效能、可自訂的網路應用程式。一、視圖的基本概念在Django

微軟更新 Visual Studio Code 1.80 微軟更新 Visual Studio Code 1.80 Jul 10, 2023 pm 08:13 PM

微軟近日推出了VisualStudioCode1.80,雖然本次更新於7月發布,官方仍將其稱為6月更新。在用戶安裝本次更新之後,內建終端可以直接顯示圖片,此外還優化了輔助功能。 VisualStudioCode先前發布的預覽版中,已支援在終端機中支援影像,而在新的1.80版本中預設為啟用狀態。為了能夠在終端中可以顯示圖像,圖像像素資料再透過特殊的轉義序列轉換為文本,最終寫入終端。如果要將典型的PNG,GIF或JPEG檔案傳遞到終端,則需要安裝imgcatpython軟體包,然後在終端中執行imgc

See all articles