內建基於類別的視圖 API¶
基於類別的視圖 API 參考。如需入門教材,請參閱基於類別的視圖主題指南。
規格¶
每個由基於類別的視圖處理的請求都具有獨立的狀態;因此,在實例上儲存狀態變數是安全的 (也就是說,self.foo = 3
是一個執行緒安全的操作)。
基於類別的視圖是使用 as_view()
類別方法部署到 URL 模式中
urlpatterns = [
path("view/", MyView.as_view(size=42)),
]
視圖引數的執行緒安全性
傳遞到視圖的引數在視圖的每個實例之間共享。這表示您不應使用列表、字典或任何其他可變物件作為視圖的引數。如果您這樣做,並且修改了共享物件,則一個使用者瀏覽您的視圖的行為可能會影響後續瀏覽相同視圖的使用者。
傳遞到 as_view()
的引數將分配到用於處理請求的實例上。使用先前的範例,這表示 MyView
上的每個請求都可以使用 self.size
。引數必須對應到類別中已存在的屬性 (在 hasattr
檢查中返回 True
)。
基礎視圖與通用視圖¶
基礎基於類別的視圖可以被視為 *父* 視圖,它們可以自己使用或從中繼承。它們可能無法提供專案所需的所有功能,在這種情況下,可以使用 Mixins 來擴展基礎視圖的功能。
Django 的通用視圖是建立在這些基礎視圖之上,並且是作為常見使用模式的快捷方式開發的,例如顯示物件的詳細資訊。它們採用在視圖開發中發現的某些常見慣用語和模式,並將它們抽象化,以便您可以快速編寫常見的資料視圖,而無需重複自己。
大多數通用視圖都需要 queryset
鍵,這是一個 QuerySet
實例;有關 QuerySet
物件的詳細資訊,請參閱建立查詢。