} } }

    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的体式格式来创建一个默示列表项目标变量名。




    分享到: