对CBV视图的探究(1)数据显示视图

简介: 对CBV视图的探究(1)数据显示视图

CBV

Class Base Views

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


数据显示视图

数据显示视图是将后台的数据展示在网页上,数据主要来自四个模型,一共定义了4个视图类。


RedirectView:用于实现HTTP重定向,默认情况下只定义get请求

视图类RedirectView用于实现HTTP重定向功能,即网页跳转功能,在Django 源码里可以看到视图类RedirectView的定义过程。

class RedirectView(View):

   """Provide a redirect on any GET request."""

   permanent = False

   url = None

   pattern_name = None

   query_string = False

   def get_redirect_url(self, *args, **kwargs):

       """

       Return the URL redirect to. Keyword arguments from the URL pattern

       match generating the redirect request are provided as kwargs to this

       method.

       """

       if self.url:

           url = self.url % kwargs

       elif self.pattern_name:

           url = reverse(self.pattern_name, args=args, kwargs=kwargs)

       else:

           return None

       args = self.request.META.get('QUERY_STRING', '')

       if args and self.query_string:

           url = "%s?%s" % (url, args)

       return url

   def get(self, request, *args, **kwargs):

       url = self.get_redirect_url(*args, **kwargs)

       if url:

           if self.permanent:

               return HttpResponsePermanentRedirect(url)

           else:

               return HttpResponseRedirect(url)

       else:

           logger.warning(

               'Gone: %s', request.path,

               extra={'status_code': 410, 'request': request}

           )

           return HttpResponseGone()

   def head(self, request, *args, **kwargs):

       return self.get(request, *args, **kwargs)

   def post(self, request, *args, **kwargs):

       return self.get(request, *args, **kwargs)

   def options(self, request, *args, **kwargs):

       return self.get(request, *args, **kwargs)

   def delete(self, request, *args, **kwargs):

       return self.get(request, *args, **kwargs)

   def put(self, request, *args, **kwargs):

       return self.get(request, *args, **kwargs)

   def patch(self, request, *args, **kwargs):

       return self.get(request, *args, **kwargs)

在视图RedirectView定义了4个属性和八个类方法


permanent:根据属性值的真假来选择重定向方式,若为True,则HTTP状态码为302,否则HTTP状态码为301。

url:代表重定向的路由地址。

pattern_name:代表重定向的路由命名。如果已设置参数url,则无须设置该参数,否则提升异常信息。

query_string:是否将当前路由地址的请求参数传递到重定向的路由地址。

get_redirect_url():根据属性pattern_name所指向的路由命名来生成响应的路由地址。

get():触发HTTP的GET请求所执行的响应处理。

剩余的类方法head(),post()等方法都HTTP的不同请求方式,都由get方法完成响应处理。

当我们的需求比较复杂时,我们可以通过重写RedirectView来满足自己复杂的需求。


基础视图TemplateView

视图类TemplateView是所有基类最基础的应用类,开发者可以直接使用应用视图,它继承多个视图类,TemplateResponseMixin,ContextMixin和View。在Pycharn里看视图类TemplateView的源码。


lass TemplateView(TemplateResponseMixin, ContextMixin, View):

   """

   Render a template. Pass keyword arguments from the URLconf to the context.

   """

   def get(self, request, *args, **kwargs):

       context = self.get_context_data(**kwargs)

       return self.render_to_response(context)

之定义了get方法,get方法又调用了get_context_data()和render_to_response()从而完成HTTP请求的响应过程。类方法get()所调用的函数方法来自父类TemplateResonseMixin和ContextMixin。


列表视图ListView

列表视图ListView的基层类是由TemplateResponseMixin、ContexMixin和View组成的,在这些基层类的基础上加入了模型的操作方法,


all_empty:在模型查询数据不存在的情况下是否显示页面,若为False并且数据不存在时,则引发404异常,默认值为True。

queryset:代表模型的查询对象,这是对模型对象进行查询操作所形成的查询对象。

model:代表模型,模型以类表示,一个模型代表一张数据表

paginte_by:代表每一页所显示的数据量。

paginte_orphans:为防止最后一页数据过少可以设置包含的溢出数量。

ordering:主要对属性queryset的查询结果进行排序。


相关文章
|
SQL 数据库
gbase8a 公用表表达式(CTE)语法介绍
gbase8a 公用表表达式(CTE)语法介绍
|
存储 NoSQL 中间件
单点登录的原理、实现、以及技术方案比较详解
本文详细介绍单点登录(SSO)的定义、原理、实现细节,探讨其在大型网站中的应用,帮助读者理解如何通过分布式Session实现高效的用户认证与授权。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
单点登录的原理、实现、以及技术方案比较详解
|
JSON API 数据格式
从零开始:什么是 YAML?
YAML 是 "YAML Ain't Markup Language" 的缩写,这是一种用于数据序列化的基于文本的标记语言。
|
消息中间件 存储 SQL
RocketMQ与Kafka架构深度对比
RocketMQ与Kafka架构深度对比
|
XML 编解码 前端开发
|
3天前
|
人工智能 自然语言处理 文字识别
阿里云百炼Qwen3.7-Max简介:能力、优势、支持订阅计划参考
Qwen3.7-Max是阿里云百炼面向智能体时代推出的新一代旗舰模型,对标GPT-5.5、Claude Opus 4.7等闭源旗舰。该模型支持百万级token上下文窗口,具备顶级推理能力、多模态搜索与视觉理解增强、流式输出低延迟响应等核心优势,覆盖编程、办公、长周期自主执行等复杂场景。同时支持OpenAI接口兼容,便于系统快速迁移。用户可通过Token Plan团队或节省计划等订阅方式灵活调用,适合企业级高要求场景使用。
8125 36
阿里云百炼Qwen3.7-Max简介:能力、优势、支持订阅计划参考
|
3天前
|
JavaScript 定位技术 API
CodeGraph 爆火:编程 Agent 需要的不是更多上下文,而是一张提前画好的代码地图
CodeGraph 是一款爆火的本地代码智能工具,通过 tree-sitter 解析 AST 构建结构化知识图谱(存于 SQLite),为编程 Agent 提前生成“代码地图”。它显著降低 Agent 在中大型项目中的探索成本——实测工具调用减少71%、Token 降57%、速度提升46%,支持19+语言及主流框架路由识别,完全离线、无需 API Key。
478 2
CodeGraph 爆火:编程 Agent 需要的不是更多上下文,而是一张提前画好的代码地图
|
3天前
|
人工智能 运维 JavaScript
阿里云Qoder CN(原通义灵码)全解析 产品形态、版本划分与技术适配说明
在AI辅助开发与智能办公工具持续普及的当下,阿里云旗下原通义灵码正式更名为Qoder CN,同时延伸出QoderWork CN、Qoder CN CLI、Qoder CN Mobile等多款配套产品,形成覆盖代码开发、日常办公、终端交互、移动端使用的完整工具矩阵。Qoder CN核心定位为AI智能编码助手,深度适配主流代码编辑器、集成开发环境以及终端场景;QoderWork CN则偏向桌面端综合办公辅助,二者面向不同使用场景,划分了多个版本档位,搭配差异化资源配额、功能权限与计费规则,同时兼容多款主流大模型。
539 4
|
3天前
|
数据采集 人工智能 前端开发
让 Coding Agent 从黑盒到透明:阿里云 Agent 观测审计数据采集实践
AI Agent 规模化落地带来执行黑盒、行为难追溯、成本难度量三大难题。阿里云基于 OTel 标准,面向 Coding Agent、个人通用助理和框架型 Agent,推出 LoongSuite Pilot、插件及探针等无侵入采集方案,让 Agent 实现可看见、可分析、可审计、可治理。
690 149
|
3天前
|
人工智能 缓存 自然语言处理
阿里Qwen3.7-Max评测:Agent能力显著提升,耗时与调用成本大幅下降
阿里云百炼推出面向智能体的旗舰大模型Qwen3.7-Max,具备长周期自主执行能力,显著提升编程、办公自动化等复杂任务处理水平;支持MCP集成与多框架兼容,并以限时5折+100万Tokens免费试用大幅降低使用门槛,助力企业高效落地AI应用。在阿里云百炼平台快速体验:https://t.aliyun.com/U/fPVHqY
1914 10

热门文章

最新文章