2011-02-04 9 views
1

Скажем, у меня есть URLconf проекта, в который входит URLconf myapp «S:Как настроить общие представления в urls.py приложения?

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 для приложения больше не имеет смысла.

Так как я могу использовать общие представления в urlconf приложения?

ответ

3

Вам не нужно использовать префикс на всех - вы можете указать полный путь к каждому из ваших представлений для каждого URL:

urlpatterns = patterns('', 
    (r'^manager$', 'myapp.views.manager_view'), 
    (r'^items/(?P<page>[0-9]+)$', 'django.views.generic.list_detail.object_list', 
     items_list), 
) 

В качестве альтернативы, вы можете иметь несколько 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), 
) 
+0

о, не думал о конкатенировании 2-х страниц, глупо меня ^^ – MatToufoutu