django的通用视图 (generic views)
2012-09-28 13:07
423 查看
转自:/article/4778420.html
如果对Django的基础部分尚不熟悉,请参考《Django实战》系列。
内容提要
1. 回顾Django的视图函数(view function)
2. 在视图函数中使用模板
3. 简化视图函数的两个工具
4. 使用通用视图函数
5. Django提供的通用视图
一个是django.shortcuts.render_to_response函数,接收一系列的参数,包括模板路径、context使用的字典、原始的context实例以及要设定的mimetype等:
render_to_response(template_path_name, dictionary=None, context_instance=None, mimetype=None)
另一个是locals()函数,将所有的局部变量组装成一个字典。
有了这两个工具,视图函数就可以这样写:
除了queryset外,object_list函数还可以接收许多其他的参数:
这个参数字典会传入template_name参数来指定渲染的模板文件。
object_detail 显示单个模型对象
update_object 修改模型对象
delete_object 删除模型对象
redirect_to 重定向到指定的url
archive_index 最顶级的归档,列出所有年份及指定数量的最新对象
archive_year 按年归档,列出所有拥有对象的月份
archive_month 按月归档,列出本月的所有对象,找到拥有对象的上一个、下一个月份
archive_week 按周归档,列出本周的所有对象
archive_day 按日归档,列出当天的所有对象,找到拥有对象的上一个、下一个日期
archive_today 当前日期(今天)的按日归档
object_detail 显示按照年/月/日/序号找到的对象
这些通用视图函数不再一一介绍,可以参考Django API文档,关注其参数,context内容和默认模板,就能基本掌握其使用
如果对Django的基础部分尚不熟悉,请参考《Django实战》系列。
内容提要
1. 回顾Django的视图函数(view function)
2. 在视图函数中使用模板
3. 简化视图函数的两个工具
4. 使用通用视图函数
5. Django提供的通用视图
1. 回顾Django的视图函数(view function)
Django中将视图定义为一种函数,我们称其为视图函数(view function)。当Django框架接收到http请求的时候,从定义的urlpatterns中寻找url表达式进行匹配,一旦找到匹配的项,就将HTTPRequest以及匹配到的其他字符串作为参数,调用找到的视图函数,然后根据视图函数返回的HTTPResponse对象进行响应。所以视图函数应该至少接收一个django.http.HTTPRequest对象作为参数,并返回django.http.HTTPResponse对象,如下:def my_view_with_template(request, *args, **kwargs): var1 = foo var2 = bar t = get_template('path_name_of_template_file') c = Context({'key1':var1,'key2':var2}) content = t.render( c) return HTTPResponse(content)
3. 简化视图函数的两个工具
总是写这样的代码实在是让人厌倦,所以Django为我们提供了两个有用的工具:一个是django.shortcuts.render_to_response函数,接收一系列的参数,包括模板路径、context使用的字典、原始的context实例以及要设定的mimetype等:
render_to_response(template_path_name, dictionary=None, context_instance=None, mimetype=None)
另一个是locals()函数,将所有的局部变量组装成一个字典。
有了这两个工具,视图函数就可以这样写:
from django.conf.urls.defaults import * from django.views.generic import list_detail from depot.depotapp.models import Product product_info = { 'queryset': Product.objects.all(), } urlpatterns = patterns('', (r'^product/list/$', list_detail.object_list, product_info) )
除了queryset外,object_list函数还可以接收许多其他的参数:
product_info = { 'queryset': Product.objects.all(), 'template_name': 'depotapp/another_product_list.html'), }
这个参数字典会传入template_name参数来指定渲染的模板文件。
5. Django提供的通用视图
除了object_list外,Django还提供了许多通用视图函数,分布在几个模块中:django.views.generic.list_detail模块
object_list 显示模型对象列表object_detail 显示单个模型对象
django.views.generic.create_update模块
create_object 创建模型对象update_object 修改模型对象
delete_object 删除模型对象
django.views.generic.simple模块
direct_to_template 直接使用指定的模板渲染给定的context对象redirect_to 重定向到指定的url
django.views.generic.date_based模块
这个模块主要处理“按时间查看存档”的功能,来源于新闻出版行业。具体包括:archive_index 最顶级的归档,列出所有年份及指定数量的最新对象
archive_year 按年归档,列出所有拥有对象的月份
archive_month 按月归档,列出本月的所有对象,找到拥有对象的上一个、下一个月份
archive_week 按周归档,列出本周的所有对象
archive_day 按日归档,列出当天的所有对象,找到拥有对象的上一个、下一个日期
archive_today 当前日期(今天)的按日归档
object_detail 显示按照年/月/日/序号找到的对象
这些通用视图函数不再一一介绍,可以参考Django API文档,关注其参数,context内容和默认模板,就能基本掌握其使用
相关文章推荐
- Django Class-based generic views 基于类的通用视图
- 深入Django(1): 通用视图 (generic views) [转]
- django使用通用视图 django.views.generic
- Django学习笔记之:【通用视图 (generic views) 】
- 千与千寻django(六)---通用视图(Generic views)
- 深入Django(1): 通用视图 (generic views)
- 基于类的通用视图(Class-based generic views)
- 用基于类的通用视图处理表单(Class-based generic views)
- 基于类的通用视图(Class-based generic views)
- 用基于类的通用视图处理表单(Class-based generic views)
- Django初级手册4-表单与通用视图
- Django views视图请求对象HttpRequest
- django通用视图
- django的通用视图
- Django 1.10中文文档-第一个应用Part4-表单和通用视图
- Django 通用视图
- Django views视图响应对象
- Django框架MTV架构之 Views(视图)
- django 通用视图
- Django框架学习-通用视图