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

视图类是通过定义和声明类的形式实现的,根据用途划分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视图有一定的了解。

Django中的CBV视图的更多相关文章

  1. Django中的CBV和FBV

    Django中的CBV和FBV 一.  CBV CBV是采用面向对象的方法写视图文件. CBV的执行流程: 浏览器向服务器端发送请求,服务器端的urls.py根据请求匹配url,找到要执行的视图类,执 ...

  2. Django中的View视图讲解

    Django中的View视图(view.py)是负责处理用户请求和返回响应的逻辑. 视图函数或视图简而言之就是一个python函数,它接受一个web请求并返回一个Web响应. 此响应可以是网页的HTM ...

  3. [Django]中建立数据库视图

    Django中建立数据库视图 Django中没有建立视图的接口.假设要建立一个视图须要一些手动的改变. 这里使用的Django 版本号>1.5, 使用的数据库为mysql 第一步 建立视图,比如 ...

  4. django中的CBV

    CBV介绍 我们在写一个django项目时,通常使用的都是FBV(function base views) 而CBV(class base views)也有它自己的应用场景,比如在写一个按照rest规 ...

  5. django中的类视图

    # 原创,转载请留言联系 当我们在开发一个注册模块时.浏览器会通过get请求让注册表单弹出来,然后用户输完注册信息后,通过post请求向服务端提交信息.这时候我们后端有两个视图函数,一个处理get请求 ...

  6. Django中请求的生命周期 和 FBV模式和CBV模式

    Django的生命周期就是你的 一个请求所发生的整个流程 Django的生命周期内到底发生了什么呢?? . 当用户在浏览器中输入url时,浏览器会生成请求头和请求体发给服务端 请求头和请求体中会包含浏 ...

  7. Django中CBV的执行顺序之源码解析

    浅析Django中的CBV的执行顺序 下图为CBV方式的执行顺序,大概执行流程如下: 其中浅蓝色为在假设自己写的类,即Test类中没有dispatch方法的情况下的执行顺序,当自己的类中有dispat ...

  8. Django框架详细介绍---视图系统

    Django视图系统 1.什么是视图 在Django中,一个视图函数/类,称为视图.实质就是一个用户自定义的简单函数,用来接收WEB请求并xing响应请求,响应的内容可以是一个HTML文件.重定向.一 ...

  9. Flask(3)- flask中的CBV、werkzeug+上下文初步解读、偏函数和线程安全

    一.flask中的CBV 对比django中的CBV,我们来看一下flask中的CBV怎么实现? from flask import Flask, render_template, url_for, ...

随机推荐

  1. SpringBoot整合Mongodb4.0

    本品文章只做学习使用: 安装mongodb推荐博客:https://www.jianshu.com/p/a75e26e5f635 1:如何在外网环境下开放mongodb 服务器版本:centos7.6 ...

  2. 后端程序员之路 1、linux、centos

    CentOS.Ubuntu.Debian三个linux比较异同 - 记事本 - 博客频道 - CSDN.NEThttp://blog.csdn.net/educast/article/details/ ...

  3. 构造方法和this的作用

    一.构造方法概述 构造方法是一个特殊的方法 是创建对象时候调用的方法 方法的名字很特殊:必须和类名保持一致,大小写都要一样 方法没有返回值 方法也没有返回值类型 构造方法无法在外部手动调用 publi ...

  4. nc替代ping

    linux nc介绍: 语 法:nc [-hlnruz][-g<网关...>][-G<指向器数目>][-i<延迟秒数>][-o<输出文件>][-p< ...

  5. MySQL深入研究--学习总结(2)

    前言 接上文,继续学习后续章节. 第四章&第五章<深入浅出索引> 这两章节主要介绍的索引结构及其如何合理建立索引,但是我觉得讲的比较简单. 总结回顾下吧,其实在我之前的文章< ...

  6. 剑指 Offer 26. 树的子结构

    剑指 Offer 26. 树的子结构 Offer 26 题目详情: 题解分析 解法一: 第一种比较容易想到的解法就是查看这两棵树的前序遍历和中序遍历序列是否都匹配. 因为前序遍历和中序遍历可以唯一确定 ...

  7. POJ-2502(Dijikstra应用+最短路)

    Subway POJ-2502 这里除了直接相连的地铁站,其他图上所有的点都要连线,这里是走路的速度. 记住最后的结果需要四舍五入,否则出错. #include<iostream> #in ...

  8. 2020年12月-第02阶段-前端基础-CSS Day03

    CSS Day03 盒子模型(CSS重点) css学习三大重点: css 盒子模型 . 浮动 . 定位 主题思路: 理解: 1.能说出盒子模型有那四部分组成 2.能说出内边距的作用以及对盒子的影响 3 ...

  9. 面试必备——Java多线程与并发(二)

    1.synchroized相关(锁的是对象,不是代码) (1)线程安全问题的主要原因 存在共享数据(也称临界资源) 存在多线程共同操作这些共享数据 解决:同一时刻有且只有一个线程在操作共享数据,其他线 ...

  10. 靶场练习-Sqli-labs通关记录(盲注)

              0x00 实验环境 本地:Win 10 靶场:sqli-labs(共65关,每日一关) 0x02 通关记录 简介:一天一关! (5)第五关: 由于此处与前四关有明显的差别,故在此我 ...