【问题标题】:Why isn't Django using the prefix from my root URLconf when reversing URLs?为什么 Django 在反转 URL 时不使用我的根 URLconf 中的前缀?
【发布时间】:2012-03-24 14:44:14
【问题描述】:

假设我有一个如下所示的 Django 项目:

- 项目 - urls.py - 项目 - 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 的交互式 shell 中使用 django.core.urlresolvers.reverse,但它不起作用:

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

问题是反向 URL 缺少根 URLconf 中的 items/ 前缀。我做错了什么?

【问题讨论】:

  • 你试过在url中使用名字吗?例如:url(...... , name='items-view'),并使用 reverse('items-view', args=[12])

标签: django url reverse


【解决方案1】:

原来我在做一些愚蠢的事情:


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

因为“项目”是可选的,reverse 方法只是忽略它并输出“/”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    • 2020-10-27
    • 1970-01-01
    • 2023-03-11
    • 2021-05-20
    • 1970-01-01
    相关资源
    最近更新 更多