假设我有一个项目的urlconf,其中包含myapp
的urlconf:
urlpatterns = patterns('',
(r'^myapp', include(myapp.urls)),
)
和myapp/urls.py
定义了一些路线:
urlpatterns = patterns('myapp.views',
(r'^manager$', 'manager_view'),
)
我想在myapp
中使用通用视图(即显示项目列表),但如果我在myapp/urls.py
中定义它,请执行以下操作:
items_list = {
'queryset': Item.objects.all(),
}
urlpatterns = patterns('myapp.views',
(r'^manager$', 'manager_view'),
(r'^items/(?P<page>[0-9]+)$', 'django.views.generic.list_detail.object_list',
items_list),
)
由于myapp.views
前缀,这不起作用。当然,我可以将通用视图模式放在项目的urls.py中,但是为应用程序设置单独的urls.py将不再有意义。
那么如何在app的urlconf中使用通用视图呢?
答案 0 :(得分:3)
您根本不需要使用前缀 - 您可以为每个网址指定每个视图的完整路径:
urlpatterns = patterns('',
(r'^manager$', 'myapp.views.manager_view'),
(r'^items/(?P<page>[0-9]+)$', 'django.views.generic.list_detail.object_list',
items_list),
)
或者,您可以在单个urlconf中拥有多个urlpatterns,并将它们连接起来:
urlpatterns = patterns('myapp.views',
(r'^manager$', 'manager_view'),
)
urlpatterns += patterns('django.views.generic',
(r'^items/(?P<page>[0-9]+)$', 'list_detail.object_list',
items_list),
)