Django中的CBV视图
- 2021 年 4 月 25 日
- 筆記
- CBV, django, Django3.1.2
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视图有一定的了解。