Django进修笔记(12):视图进阶(下)
添加时间:2013-5-17 点击量:
一、Django内建通用视图的功能
上一节具体列出了通用视图,这一节就一一对它们进行演示、扩大和总结。
通用视图的功能可分如下:
1、重定向、衬着页面
2、显示列表、特定内容
3、归档
4、增删查改对象
它们首要就是进步开辟效力,供给一套套功能模块,或叫做供给了这些功能接口
二、静态的通用视图
关于处理惩罚静态页面,在不懂得通用视图的时辰,可能我会如许做。
1 url:
2 urlpatterns = patterns(,
3 (r^common/about/¥,login.views.about), #关于我们
4 )
5 views:
6 def about(request):
7 return return render_to_response(common_operate/about.html)
若是有很多静态页面的话,我想如许写不是办法吧 。在Django视图函数中可以应用通用视图,如下:
1 URL:
2 django.views.generic.simple import direct_to_template
3 urlpatterns = patterns(,
4 (r^common/about/¥,direct_to_template,{template:common_operate/about.html}), #关于本网站
5 )
如许就不消写视图函数了,Django已经主动为我们处理惩罚好了。因为direct_to_template 视图从参数中获取衬着视图所需的相干信息。英辞意思很清楚了,direct(直接)_to(到)_template(模板)。。。。。。
三、对象的通用视图
这里的对象就是model里的对象模型了,对象的通用视图指的是对数据库中数据的处理惩罚,是最常见的一项目组,例如生成模型对象的列表和明细视图等。
对象列表视图:
1 URL:
2 login.models import New
3 django.views.generic import list_detail
4 new_info={
5 queryset:New.objects.all(),
6 }
7
8 urlpatterns = patterns(,
9 (r^test/new_test/¥,list_detail.object_list,new_info),
10 )
还差个模板,可能会想应用“template”来告诉object_list视图函数应用哪个模板,然则object_list视图是通用型的,你断定要改成一个私用的吗?
在Django不给定模板的时辰会用对象的名称推导出一个,如login/new_list.html,login是app的名称,new_list.html是数据模型New的小写情势后面再加上_list构成的。如下:
重视这个模板将遵守context中包含的变量object_list来衬着,如下:
1 <ul>
2 {% for new in object_list %}
3 <li>{{new.title}}</li>
4 {% endfor %}
5 </ul>
看上去很Cool 吧。
如许有点不友爱,因为在模板中,我们不知道object_list到底是什么东东,这里可以扩大下:
1 URL:
2 ....
3 new_info={
4 queryset:New.objects.all(),
5 template_object_name:new,
6 }
7 ....
然后再更改模板中{% for new in object_list %},将object_list改为new_list.
在模板中,通用视图会经由过程在template_object_name后追加一个_list的体式格式来创建一个默示列表项目标变量名。
一、Django内建通用视图的功能
上一节具体列出了通用视图,这一节就一一对它们进行演示、扩大和总结。
通用视图的功能可分如下:
1、重定向、衬着页面
2、显示列表、特定内容
3、归档
4、增删查改对象
它们首要就是进步开辟效力,供给一套套功能模块,或叫做供给了这些功能接口
二、静态的通用视图
关于处理惩罚静态页面,在不懂得通用视图的时辰,可能我会如许做。
1 url:
2 urlpatterns = patterns(,
3 (r^common/about/¥,login.views.about), #关于我们
4 )
5 views:
6 def about(request):
7 return return render_to_response(common_operate/about.html)
若是有很多静态页面的话,我想如许写不是办法吧 。在Django视图函数中可以应用通用视图,如下:
1 URL:
2 django.views.generic.simple import direct_to_template
3 urlpatterns = patterns(,
4 (r^common/about/¥,direct_to_template,{template:common_operate/about.html}), #关于本网站
5 )
如许就不消写视图函数了,Django已经主动为我们处理惩罚好了。因为direct_to_template 视图从参数中获取衬着视图所需的相干信息。英辞意思很清楚了,direct(直接)_to(到)_template(模板)。。。。。。
三、对象的通用视图
这里的对象就是model里的对象模型了,对象的通用视图指的是对数据库中数据的处理惩罚,是最常见的一项目组,例如生成模型对象的列表和明细视图等。
对象列表视图:
1 URL:
2 login.models import New
3 django.views.generic import list_detail
4 new_info={
5 queryset:New.objects.all(),
6 }
7
8 urlpatterns = patterns(,
9 (r^test/new_test/¥,list_detail.object_list,new_info),
10 )
还差个模板,可能会想应用“template”来告诉object_list视图函数应用哪个模板,然则object_list视图是通用型的,你断定要改成一个私用的吗?
在Django不给定模板的时辰会用对象的名称推导出一个,如login/new_list.html,login是app的名称,new_list.html是数据模型New的小写情势后面再加上_list构成的。如下:
重视这个模板将遵守context中包含的变量object_list来衬着,如下:
1 <ul>
2 {% for new in object_list %}
3 <li>{{new.title}}</li>
4 {% endfor %}
5 </ul>
看上去很Cool 吧。
如许有点不友爱,因为在模板中,我们不知道object_list到底是什么东东,这里可以扩大下:
1 URL:
2 ....
3 new_info={
4 queryset:New.objects.all(),
5 template_object_name:new,
6 }
7 ....
然后再更改模板中{% for new in object_list %},将object_list改为new_list.
在模板中,通用视图会经由过程在template_object_name后追加一个_list的体式格式来创建一个默示列表项目标变量名。