generic views 新掌握的一个方法;)--extra_context 作者:zjxplq发表于2009-05-19 13:31:45
引用于http://www.javaeye.com/topic/111718
相关文章:
初识django, 一起进入python的世界吧
django心得:url可以做的更多
django 简化 view 函数的编写
推荐圈子: EXT
更多相关推荐 今天要写一个程序的小模块---同一个网页里面,中间的内容区要显示所有的student,而在右侧边栏需要显示所有的class(班级;))
起初已经写完了显示所有student的代码了,用的就是generic views----太爽了,仅用了很少很少的代码。
--------------------------------------------------------------------------------
newsList = {
'queryset': Student.objects.all(),
}
urlpatterns = patterns('',
(r'^$', 'django.views.generic.list_detail.object_list',dict(paginate_by=20, **newsList)),
)
--------------------------------------------------------------------------------
note:
paginate_by=20指每20个记录分页
默认的模版名字为 (你的app名称)_list.html,如你的app为stu,那么默认模版就为stu_list.html
接下来需求变更,要求我在同一页面显示class列表...
呵呵,因为我比较懒,所以一来我不想修改现有代码,二来不愿意重新写views中关于查询数据库然后传递到模版等代码。我想generic views一定已经解决了同时传多个字典的情况了。呵呵,果然:你只需添加extra_context就可以了--还是非常少的代码
--------------------------------------------------------------------------------[code]newsList = {
'queryset': Student.objects.all(),
'extra_context': {'classes': Class.objects.all()},
}
urlpatterns = patterns('',
(r'^$', 'django.views.generic.list_detail.object_list',dict(paginate_by=20, **newsList)),
)
[/code]--------------------------------------------------------------------------------
在模版里,你只需取classes的值就可以了,如:[code]{% for item in classes%}
{{ item.classes_name }}
{% endfor %}
[/code]
