Django网络应用开发的5项基础核心技术包括模型(Model)的设计,URL 的设计与配置,View(视图)的编写,Template(模板)的设计和Form(表单)的使用。
django基于类的通用视图就是将一些mixin合成为有用的通用视图。基于类的通用视图(以及任何继承了Django提供的基础类的基于类的视图)都能够以下面两种方式被配置:子类化,或者直接通过URLconf来传递参数。
from django.views.generic import TemplateView
当子类化一个类视图时,可以重写一些属性(比如template_name)或者 一些方法(比如 get_context_data)在子类中来提供一些新的值或者方 法。考虑一下,比如,一个仅仅需要展示一个模板的视图,index.html。Django有一个通用视图来完成这个功能 - TemplateView - 因此可以子类化它,然后重写模板的名称:
from django.views.generic import TemplateView
class IndexView(TemplateView):
template_name = "index.html"
需要添加这个新的视图到URLconf配置中。因为类视图本身是一个类,把URL指向 as_view 这个类方法来替代类本身,这是类视图的入口点:
from django.urls import path
from some_app.views import IndexView
urlpatterns = [
path('index/', IndexView.as_view()),
]
作为一个选择,如果仅仅修改类视图中少量简单的属性,可以直接传递新的属性到类本身调用 as_view 方法中:
from django.urls import path
from django.views.generic import TemplateView
urlpatterns = [
path('index/', TemplateView.as_view(template_name="index.html")),
]