Web 開發是一項無聊而且單調的作業,特別是在視圖功能撰寫方面更為顯著,為了減少這種痛苦,Django植入了視圖類這一功能,該功能封裝了視圖開發常用的代碼,無須撰寫大量代碼即可快速完成資料視圖的開發,這種以類的形式實作回應與請求處理稱為 CBV(Class Base Views),

視圖類是通過定義和宣告類的形式實作的,根據用途劃分3部分:資料顯示視圖、資料操作視圖和日期篩選視圖,
1、資料顯示視圖
資料顯示視圖是將后臺的資料展示在網頁上,資料主要來自模型,一共定義了4個視圖類,分別是RedirectView、TemplateView、ListView 和 DetailView,說明如下:
- RedirectView用于實作 HTTP 重定向,默認情況下只定義 GET 請求的處理方法,
- TemplateView是視圖類的基礎視圖,可將資料傳遞給HTML模板,默認情況下只定義 GET 請求的處理方法,
- ListView是在 TemplateView 的基礎上將資料以串列顯示,通常將某個資料表的資料以串列表示,
- DetailView是在 TemplateView 的基礎上將資料詳細顯示,通常獲取資料表的單條資料,
2、資料操作視圖
資料操作視圖是對模型進行操作,如增、刪、改,從而實作 Django 與資料庫的資料互動,資料操作視圖有 4個 視圖類,分別是 FormView,CreateView、UpdateView和 DeleteView,說明如下:
- FormView 視圖類使用內置的表單功能,通過表單實作資料驗證、回應輸出等功能,用于顯示表單資料,
- CreateView 實作模型的資料新增功能,通過內置的表單功能實作資料新增,
- UpdateView 實作模型的資料修改功能,通過內置的表單功能實作資料修改,
- DeleteView 實作模型的資料洗掉功能,通過內置的表單功能實作資料洗掉,
3、日期篩選視圖
日期篩選視圖是根據模型里的某個日期欄位進行資料篩選的,然后將符合結果的資料以一定的形式顯示在網頁上,簡單來說,在串列視圖 ListView 或 詳細視圖DetailView 的基礎上增加日期篩選所實作的視圖類,它一共定義了 7 個日期視圖類,說明如下:
- ArchivelndexView是將資料表所有的資料以某個日期欄位的降序方式進行排序顯示的,
- YearArchiveView 是在資料表篩選某個日期欄位某年的所有的資料,默認以升序的方式排序顯示,年份的篩選范圍由 路由 變數提供,
- MonthArchiveView 是在資料表篩選某個日期欄位某年某月的所有的資料,默認以升序的方式排序顯示,年份和月份的篩選范圍由 路由 變數提供,
- WeekArchiveView 是在資料表篩選某個日期欄位某年某周的所有的資料,總周數是將一年的總天數除以7所得的,資料默認以升序的方式排序顯示,年份和周數的篩選范圍都是由 路由 變數提供,
- DayArchiveView 是對資料表的某個日期欄位精準篩選到某年某月某天,將符合條件的資料以升序的方式排序顯示,年份、月份和天數都是由路由 變數提供,
- TodayArchiveView 是在視圖類DayArchiveView 的基礎上進行封裝處理的,它將資料表的某個日期欄位的篩選條件設為當天,符合條件的資料以升序的方式排序顯示,
- DateDetailView 是查詢某年某月某日某條資料的詳細資訊,它在視圖類 Detailview 的基礎上增加了日期篩選功能,篩選條件主要有年份、月份、天數和某個模型欄位,其中某個模型欄位必須具有唯一性,才能確保查詢的資料具有唯一性,
希望以上內容能讓各位對Django中的CBV視圖有一定的了解,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/280159.html
標籤:Python
下一篇:pandas(9):排序
