文档章节

Django 基于类的视图源码分析 三

XuYuan
 XuYuan
发布于 2013/02/22 15:56
字数 571
阅读 507
收藏 8

列表类通用视图(list.py)

此文件包含用于显示数据列表常用的类和工具类。不仅可以方便的用于显示基于模型(Model)的数据列表,也可以用于显示自定义数据列表。

list.py类图

此图中绿色部分属于base.py,引入此图中是为了说明他们之间的关系

MultipleObjectMixin

最主要的核心工具类,主要的算法和接口全部都在这个工具类中实现。

  • 属性

allow_empty 默认值True。表示没有数据时显示空列表;否则将会产生一个404错误。

queryset 产生数据的queryset实例或"类queryset"数据列表。

model 关联的模型类。

paginated_by 分页的每页数据项数。默认不起用分页。

context_object_name 保存到context中的对象名称。默认是$(model)_list。

paginator_class 默认值Paginator。分页处理器。

  • 方法

get_queryset 获取用于数据显示的列表对象。可以是类queryset对象。此方法优先选择使用queryset属性。未提供queryset属性时,返回model的默认管理器。如果也没有提供model属性,将会产生ImproperlyConfigured异常。

paginate_queryset 根据需要,将queryset分页。返回(paginator, page, page.object_list, page.has_other_pages())

get_paginate_by 返回每页数据项数。None表示不分页。

get_paginator 返回分页器

get_allow_empty 参见allow_empty属性说明

get_context_object_name 参见context_object_name属性说明

get_context_data 设置视图的附加属性。通常重写此方法来为视图提供附加数据。 默认设计的视图数据:

'paginator': 分页器, 'page_obj': 页对象, 'is_paginated': 是否进行了分页, 'object_list': 视图的数据

BaseListView

视图列表基类。继承自MutipleObjectMixin和View。这是一个抽象类。此函数通过增加get方法来整合View的处理流程和MutipleObjectMixin提供的工具函数。

MultipleObjectTemplateResponseMixin

继承自TemplateResponseMixin,并重写get_template_names方法。追加$(app_label)/$(model)_list.html作为默认模板。

ListView

本模块功能集大成者。一般都是直接继承此类,并重写MutipleObjectMixin的一些默认属性和/或方法来实现需求。

此类继承自MultipleObjectTemplateResponseMixin和BaseListView。一般来说,只需提供model属性,并编写$(model)_list.html即可实现数据列表功能。如需分页可以重写paginated_by属性,指定每页数据项数目。

© 著作权归作者所有

共有 人打赏支持
XuYuan
粉丝 14
博文 24
码字总数 12461
作品 0
石家庄
架构师
私信 提问
详解Django的CSRF认证

1.csrf原理 2.Django中的CSRF中间件 首先,我们知道Django中间件作用于整个项目。 在一个项目中,如果想对全局所有视图函数或视图类起作用时,就可以在中间件中实现,比如想实现用户登录判断...

任平生78
2018/10/08
0
0
Django 基于类的视图源码分析 一

基于类的视图(Class-based view)是Django 1.3引入的新的视图编写方式,用于取代以前基于函数(Function-based)方式。借助于OO和Python中方便的多重继承特性,基于类的视图可以提供更好的抽象与...

XuYuan
2013/02/05
0
0
Django 之 基于类的视图源码分析

基于类的视图(Class-based view)是Django 1.3引入的新的视图编写方式,用于取代以前基于函数(Function-based)方式。 借助于OO和Python中方便的多重继承特性,基于类的视图可以提供更好的抽象...

首席安全砖家
2013/06/11
0
0
django admin源码分析

Django Admin源码流程 一、整体看Admin执行流程 1. 启动admin 注册模型 设计URL并将AdminSite实例挂钩到您的URLconfig中 二、admin.site.register django启动的时候,顺序为:先register,然...

zhujun2017
2018/06/04
0
0
基于Django实现 RESTful API 之RestFramework框架

一、首先什么是RESTful REST与技术无关,代表的是一种软件架构风格,REST是Representational State Transfer的简称,中文翻译为“表征状态转移” REST从资源的角度类审视整个网络,它将分布在...

SlashBoyMr_wang
2018/09/17
0
0

没有更多内容

加载失败,请刷新页面

加载更多

zabbix安装配置

环境 系统:centos7.5软件版本: mysql: 5.7 zabbix: 3.4.15内网: Port: 10051 IP: 192.168.2.71外网: Port: 34521 Domain: freefrp.cnAgent被动模式(默认) ...

亦漩
25分钟前
2
0
一看就能学会的H5视频推流方案

本文由云+社区发表 作者:周超 导语 随着直播平台爆发式增长,直播平台从 PC 端转战移动端,紧跟着直播的潮流,自己学习实现了一套简单的 H5 视频推流的解决方案,下面就给小伙伴们分享一下自...

腾讯云加社区
27分钟前
3
0
Spring Boot 2.X优雅停止

本文章介绍了正常关闭Spring Boot 应用程序的过程。许多开发人员和架构师总是讨论SpringBoot的应用设计、流量负载、框架和应用模式,但很少有人讨论关闭阶段。生命周期意识可以说一个真正资深...

WUBAOQUAN
38分钟前
4
0
Linux Redis 高可用之主从复制

Redis主从复制简介 和MySQL主从复制的原因一样,Redis虽然读取写入的速度都特别快,但是也会产生读压力特别大的情况。为了分担读压力,Redis支持主从复制,Redis的主从结构可以采用一主多从或...

我最喜欢三大框架
44分钟前
3
0
HTML5技术分享之自动化构建工具gulp使用

gulp是是前端开发对代码进行构建的工具,是基于 Nodejs 的自动任务运行器,他能自动化地完成 javascript/coffee/sass/less/html/image/css 等文件的的测试、检查、合并、压缩、格式化、浏览器...

纤纤郡主
51分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部