
- Django 基礎概念
- Django - 首頁
- Django - 基礎知識
- Django - 概述
- Django - 環境配置
- Django - 建立專案
- Django - 應用生命週期
- Django - 建立檢視
- Django - URL 路由
- Django - 首頁
- Django - 模板系統
- Django - MVT
- Django - 新增主模板
- Django 管理後臺
- Django 管理後臺 - 介面
- Django 管理後臺 - 建立使用者
- Django 管理後臺 - 新增模型
- Django 管理後臺 - 設定顯示欄位
- Django 管理後臺 - 更新物件
- Django 模型
- Django - 模型
- Django - 插入資料
- Django - 更新資料
- Django - 刪除資料
- Django - 更新模型
- Django 靜態檔案
- Django - 新增靜態檔案
- Django - 新增 CSS 檔案
- Django 進階
- Django - 404 頁面未找到
- Django - 頁面重定向
- Django - 傳送郵件
- Django - 通用檢視
- Django - 表單處理
- Django - 檔案上傳
- Django - Apache 配置
- Django - Cookie 處理
- Django - Session
- Django - 快取
- Django - 評論
- Django - RSS
- Django - AJAX
- Django 有用資源
- Django - 快速指南
- Django - 有用資源
- Django - 討論
Django - 通用檢視
在某些情況下,像我們之前看到的那樣編寫檢視非常繁瑣。想象一下,你需要一個靜態頁面或一個列表頁面。Django 提供了一種簡單的方法來設定這些簡單的檢視,稱為通用檢視。
與經典檢視不同,通用檢視是類而不是函式。Django 在 `django.views.generic` 中提供了一組通用檢視類,每個通用檢視都是這些類之一或繼承自這些類之一的類。
有 10 多個通用類 -
>>> import django.views.generic >>> dir(django.views.generic) ['ArchiveIndexView', 'CreateView', 'DateDetailView', 'DayArchiveView', 'DeleteView', 'DetailView', 'FormView', 'GenericViewError', 'ListView', 'MonthArchiveView', 'RedirectView', 'TemplateView', 'TodayArchiveView', 'UpdateView', 'View', 'WeekArchiveView', 'YearArchiveView', '__builtins__', '__doc__', '__file__', '__name__', '__package__', '__path__', 'base', 'dates', 'detail', 'edit', 'list']
你可以將這些用於你的通用檢視。讓我們看一些例子來了解它的工作原理。
靜態頁面
讓我們從“static.html”模板釋出一個靜態頁面。
我們的 static.html -
<html> <body> This is a static page!!! </body> </html>
如果我們以前學習的方式去做,我們需要將 `myapp/views.py` 更改為 -
from django.shortcuts import render def static(request): return render(request, 'static.html', {})
以及 `myapp/urls.py` 更改為 -
from django.conf.urls import patterns, url urlpatterns = patterns("myapp.views", url(r'^static/', 'static', name = 'static'),)
最好的方法是使用通用檢視。為此,我們的 `myapp/views.py` 將變為 -
from django.views.generic import TemplateView class StaticView(TemplateView): template_name = "static.html"
我們的 `myapp/urls.py` 將變為 -
from myapp.views import StaticView from django.conf.urls import patterns urlpatterns = patterns("myapp.views", (r'^static/$', StaticView.as_view()),)
訪問 /myapp/static 你將得到 -

為了得到相同的結果,我們也可以這樣做 -
- views.py 不變
- 將 url.py 檔案更改為 -
from django.views.generic import TemplateView from django.conf.urls import patterns, url urlpatterns = patterns("myapp.views", url(r'^static/',TemplateView.as_view(template_name = 'static.html')),)
正如你所看到的,在第二種方法中,你只需要更改 url.py 檔案。
列出並顯示資料庫中的資料
我們將列出 Dreamreal 模型中的所有條目。使用 ListView 通用檢視類可以輕鬆實現這一點。編輯 url.py 檔案並將其更新為 -
from django.views.generic import ListView from django.conf.urls import patterns, url urlpatterns = patterns( "myapp.views", url(r'^dreamreals/', ListView.as_view(model = Dreamreal, template_name = "dreamreal_list.html")), )
需要在此處注意的是,通用檢視傳遞給模板的變數是 `object_list`。如果你想自己命名它,你需要向 `as_view` 方法新增一個 `context_object_name` 引數。然後 url.py 將變為 -
from django.views.generic import ListView from django.conf.urls import patterns, url urlpatterns = patterns("myapp.views", url(r'^dreamreals/', ListView.as_view( template_name = "dreamreal_list.html")), model = Dreamreal, context_object_name = ”dreamreals_objects” ,)
相關的模板將是 -
{% extends "main_template.html" %} {% block content %} Dreamreals:<p> {% for dr in object_list %} {{dr.name}}</p> {% endfor %} {% endblock %}
訪問 /myapp/dreamreals/ 將生成以下頁面 -

廣告