数据显示视图
django 封装了四个视图类,分别是:
RedirectView 用于实现Http重定向,默认只定义GET请求的处理方法
TemplateView 基础视图,连接模板上下文,默认只定义GET请求的处理方法
ListView 在基础视图上以列表显示
DetailView 在基础视图上进行详细展示
基础视图类 TemplateView(TemplateResponseMixin,ContextMinix,View)
*基础视图类只定义get方法,调用继承类ContextMinix的get_context_data()获取模板的上下文,将数据转换成HTML网页数据。
*get方法返回TemplateResponseMinin的方法render_to_response(),实现响应处理,该类定义四个属性和两个类方法
*template_name:模板文件的文件名
*template_engine:解析模板的模板引擎,默认为None
*response_class:设置HTTP的响应类,默认为None
*context_type:设置响应类容的数据格式
*render_to_response(): 实现响应处理
*get_template_names(): 获取属性template_name的值
示例如下:
class index(TemplateView):
template_name = 'index.html'
template_engine = None
content_type = None
extra_context = {'title':'This is GET'}
#重定义模板上下文获取方式
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['value'] = 'i am MyDjango'
return context
#定义post请求处理
def post(self,request,*args,**kwargs):
self.extra_context = {'title':'this is post'}
context = self.get_context_data(**kwargs)
return self.render_to_response(context)
列表视图ListVoew(MUltiple0TemplateResponseMixin,BaseListView)类
列表视图底层类由TemplateResponseMixin,ContextMixin,View组成,有着基础视图TemplateView类的所有方法和属性,并且扩展了属性和方法
*allow_empty:在查询数据不存在时是否显示页面,默认为True,Flase时,404
*queryset:模型的查询对象
*model:模型
*paginate_by: 每一页显示的数据量
*paginate_orphans: 最后一页可以溢出的数据量,默认0
*context_object_name:模板上下文
*pagibator_class: 分页的功能
*page_kwarg: 分页参数名称
*odering 对查询结果排序
*get_queryset() 获取属性querset的值
*get_ordering() 获取属性ordering的值
*paginate_queryset() 对queryset的数据进行分页处理
*get_paginate_by() 获取每页的数据量
*get_paginateor() 返回当前页数对应的数据信息
*get_paginate_orphans() 获取最后一页可以包含溢出的数据量
*get_allow_empty() 获取allow_empty的值
*get_paginate_object_name() 设置模板上下文名称
*get_context_date() 获取模板上下文
*template_name_suffix() 设置模板后缀名
*get_template_names() 获取属性template_name
*get() 定义HTTP的GET请求处理方法
示例如下:
from django.views.generic import ListView
from .models import PersonInfo
class index(ListView):
template_name = 'index_1.html'
extra_context = {'title':'人员信息表'}
#查询模型
queryset = PersonInfo.objects.all()
#每页显示一条数据
paginate_by = 1
详细视图类DetailView(SingLeObjectTemplateResponseMixin,BaseDetailView)
详细视图类的底层继承类与列表视图类一样,增添了以下属性和方法:
*template_name_field 模板名称
*template_name_suffix 文件后缀 默认是_detail
*get() GET()请求处理方法
*model 模型
*queryset 模型查询对象
*context_object_name 设置模板上下文
*slug_field 根据字段作为查询对象
*slug_url_kwarg 路由地址的某个变量作为模型字段的查询范围
*pk_url_kwarg 路由地址的某个变量作为主键的查询范围
*query_pk_and_slug 若为True,则用上面两个属性进行查询
*get_object() 对模型进行单条数据查询
*get_queryset() 获取queryset属性值
*get_slug_field() 根据slug_field查询对应数据
*get_context_object_name() 设置模板上下文
*get_context_data() 获取模板上下文
数据操作视图
数据操作视图分为四类,为:
*FormView 表单操作视图。用于数据验证,响应输出等
*CreateView 表单更新视图,实现数据更新
*UpdateView 数据修改视图 实现数据修改
*DeleteView 数据删除视图 实现数据删除
表单视图 FormView(TemplateResponseMixin,BaseFormView)
表单视图的底层类和继承视图一样,新增了如下属性和方法: