Django 基于类的视图源码分析 三
2013-02-22 15:56
337 查看
列表类通用视图(list.py)
此文件包含用于显示数据列表常用的类和工具类。不仅可以方便的用于显示基于模型(Model)的数据列表,也可以用于显示自定义数据列表。此图中绿色部分属于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属性,指定每页数据项数目。
相关文章推荐
- Django 基于类的视图(CBV)执行流程 CBV 源码分析
- Django——基于类的视图源码分析 三
- Django——基于类的视图源码分析 二
- Django——基于类的视图源码分析 一
- Django源码分析3:处理请求wsgi分析与视图View
- Django基于Pycharm开发之四[关于静态文件的使用,配置以及源码分析](原创)
- Django-深度分析Django基于类的视图(1)(翻译)
- Django Rest Framework----ModelViewSet视图 ModelViewSet源码分析
- <原创> JAVA ArrayList源码分析(基于JDK7)
- 基于N源码的AccountManagerService简单认识和账户添加流程分析
- AsyncTask(二)AsyncTask源码分析(基于android-24)
- spring mvc json及各类视图解析 源码分析
- Spring Security源码分析十二:Spring Security OAuth2基于JWT实现单点登录
- 基于mjpg-streamer-r63的源码分析之:基础知识详细解释[一]
- Android版数据结构与算法(四):基于哈希表实现HashMap核心源码彻底分析
- 基于Django Form源码开发自定义Form组件
- 基于XMPP协议的aSmack源码分析【1】
- 源码解析--Android视图状态及重绘流程分析
- Django 中针对基于类的视图添加 csrf_exempt
- Java集合框架成员之ArrayList类的源码分析(基于JDK1.8版本)