Почему Django не использует префикс из моего корневого URLconf при обращении URL? - PullRequest
0 голосов
/ 07 марта 2012

Предположим, у меня есть проект Django, который выглядит следующим образом:

- project
   - urls.py
   - items
      - urls.py
      - views.py

Корневой URLconf выглядит следующим образом:

urlpatterns = patterns('',
    url(r'^(?:items/)?$', include('items.urls')),
)

URLconf для элементов выглядит следующим образом:

urlpatterns = patterns('items.views',
    url(r'^(?P<item_id>\d+)/$', 'view'),
)

views.py содержит метод:

def view(request, item_id):
    item = get_object_or_404(Item, pk=item_id)
    return render(request, 'item/view.html', {'item': item})

Я пытаюсь использовать django.core.urlresolvers.reverse в интерактивной оболочке Django, но он не работает:

>>> reverse('items.views.view', kwargs={'item_id': 12})
'/12/'

Проблема в том, что в обратном URL отсутствует префикс items/ из корневого URLconf.Что я делаю не так?

1 Ответ

1 голос
/ 07 марта 2012

Оказывается, я делал что-то глупое:


url(r'^<b>(?:items/)?</b>$', include('items.urls')),

Поскольку 'items' является необязательным, метод reverse просто игнорирует его и выдает '/'.

...