假设我有一个看起来像这样的Django项目:
- project - urls.py - items - urls.py - views.py
root 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的交互式shell中使用django.core.urlresolvers.reverse
,但它无效:
>>> reverse('items.views.view', kwargs={'item_id': 12}) '/12/'
问题是反向的URL缺少根URLconf的items/
前缀。我做错了什么?
答案 0 :(得分:1)
事实证明我做的事情是愚蠢的:
url(r'^(?:items/)?$', include('items.urls')),
因为'items'是可选的,reverse
方法只是忽略它并输出'/'。