1.通用视图
2.Django 提供了 4 种通用视图(generic view),它们可以让开发人员创建遵循典型模式的应用程序:
- 页面列表/详细页面(与上面的例子类似)
- 基于数据的记录分类(对于新闻或 blog 站点非常有用)
- 对象的创建、更新和删除(CRUD)
- 简单直接的模板表示或简单地对 HTTP 重新进行定向
- 我们没有创建样板视图方法,而是将所有的业务逻辑都放入了 urls.py 文件中,它们都由 Django 提供的通用视图进行处理。
- 清单 33. jobs/urls.py 中的通用视图
- from django.conf.urls.defaults import *
- from jobs.models import Job
- info_dict = {
- 'queryset': Job.objects.all(),
- }
- urlpatterns = patterns('django.views.generic.list_detail',
- (r'^$', 'object_list', info_dict),
- (r'^(?P<object_id>\d+)/$', 'object_detail', info_dict),
- )
- 这个 urls.py 文件中的 3 个主要变化如下:
- info_dict 映射对象会为要访问的 Job 提供一个查询集。
- 它使用了 django.views.generic.list_detail,而不是 djproject.jobs.views。
- 真正的视图调用是 object_list 和 object_detail。
- 这个项目需要遵循一些要求才能让通用视图自动工作:
- 通用详细视图期望获得一个 object_id 参数。
- 模板遵循下面的命名模式:app_label/model_name_list.html (jobs/job_list.html) app_label/model_name_detail.html (jobs/job_detail.html)
- 列表模板处理一个名为 object_list 的列表。
- 详细模板处理一个名为 object 的对象。
- 更多选项可以通过 info_dict 来传递,其中包括指定每个页面中对象个数的 paginate_by 值。