我使用带有NamespaceVersioning的django-rest-framework。我的主要urls.py看起来像这样:
...
url(r'^api/v1/', include('my_api.api_urls', app_name="api", namespace='v1')),
...
在my_api.api_urls.py中:
urlpatterns = [
url(r'^some-endpoint/$', api_views.MyView.as_view(), name='some'),
]
不知何故,我无法撤消这些网址。为什么我不能这样做?我收到NoReverseMatch
例外。
reverse('some')
我无法围绕django的命名空间,但不应该只使用最后定义的路线?如果我从主网址中删除命名空间参数,一切正常。
修改
也不行:
reverse('v1:some')
我可能还会补充说,在我的主网址文件中,我将多个网址文件包含在api / v1 /前缀中:
...
url(r'^api/v1/', include('my_api.api_urls', app_name="api", namespace='v1')),
url(r'^api/v1/', include('my_other_api.api_urls', app_name="api", namespace='v1')),
...
答案 0 :(得分:5)
在django中反转网址名称时,您必须使用reverse('v1:some')
模式进行反转。
您的反向通话应如下所示:
<input>
请参阅:How to use reverse()
in django
更新:您在多个网址条目上使用相同的命名空间。保持url名称空间的唯一性。