Django中的CBV视图

Web 开发是一项无聊而且单调的工作,特别是在视图功能编写方面更为显著。为了减少这种痛苦,Django植入了视图类这一功能,该功能封装了视图开发常用的代码,无须编写大量代码即可快速完成数据视图的开发,这种以类的形式实现响应与请求处理称为 CBV(Class Base Views)。

Django中的CBV视图

 

 视图类是通过定义和声明类的形式实现的,根据用途划分3部分:数据显示视图数据操作视图日期筛选视图

1、数据显示视图

数据显示视图是将后台的数据展示在网页上,数据主要来自模型,一共定义了4个视图类,分别是RedirectViewTemplateViewListView DetailView,说明如下:

  • RedirectView用于实现 HTTP 重定向,默认情况下只定义 GET 请求的处理方法。
  • TemplateView是视图类的基础视图,可将数据传递给HTML模板,默认情况下只定义 GET 请求的处理方法。
  • ListView是在 TemplateView 的基础上将数据以列表显示,通常将某个数据表的数据以列表表示。
  • DetailView是在 TemplateView 的基础上将数据详细显示,通常获取数据表的单条数据。

2、数据操作视图

数据操作视图是对模型进行操作,如增、删、改,从而实现 Django 与数据库的数据交互。数据操作视图有 4个 视图类,分别是 FormViewCreateViewUpdateViewDeleteView,说明如下:

  • FormView 视图类使用内置的表单功能,通过表单实现数据验证、响应输出等功能,用于显示表单数据。
  • CreateView 实现模型的数据新增功能,通过内置的表单功能实现数据新增。
  • UpdateView 实现模型的数据修改功能,通过内置的表单功能实现数据修改。
  • DeleteView 实现模型的数据删除功能,通过内置的表单功能实现数据删除。

3、日期筛选视图

日期筛选视图是根据模型里的某个日期字段进行数据筛选的,然后将符合结果的数据以一定的形式显示在网页上。简单来说,在列表视图 ListView详细视图DetailView 的基础上增加日期筛选所实现的视图类。它一共定义了 7 个日期视图类,说明如下:

  • ArchivelndexView是将数据表所有的数据以某个日期字段的降序方式进行排序显示的。
  • YearArchiveView 是在数据表筛选某个日期字段某年的所有的数据,默认以升序的方式排序显示,年份的筛选范围由 路由 变量提供。
  • MonthArchiveView 是在数据表筛选某个日期字段某年某月的所有的数据,默认以升序的方式排序显示,年份和月份的筛选范围由 路由 变量提供。
  • WeekArchiveView 是在数据表筛选某个日期字段某年某周的所有的数据,总周数是将一年的总天数除以7所得的,数据默认以升序的方式排序显示,年份和周数的筛选范围都是由 路由 变量提供。
  • DayArchiveView 是对数据表的某个日期字段精准筛选到某年某月某天,将符合条件的数据以升序的方式排序显示,年份、月份和天数都是由路由 变量提供。
  • TodayArchiveView 是在视图类DayArchiveView 的基础上进行封装处理的,它将数据表的某个日期字段的筛选条件设为当天,符合条件的数据以升序的方式排序显示。
  • DateDetailView 是查询某年某月某日某条数据的详细信息,它在视图类 Detailview 的基础上增加了日期筛选功能,筛选条件主要有年份、月份、天数和某个模型字段,其中某个模型字段必须具有唯一性,才能确保查询的数据具有唯一性。

希望以上内容能让各位对Django中的CBV视图有一定的了解。

上一篇:springframework包下的RequestContextHolder类和ServletRequestAttributes类的源码和使用


下一篇:异步子线程获取request