与版本化API的命名空间URL基本相反

Nus*_*chk 2 django django-rest-framework

我使用带有NamespaceVersioning的django-rest-framework.我的主要urls.py看起来像这样:

...
url(r'^api/v1/', include('my_api.api_urls', app_name="api", namespace='v1')),
...
Run Code Online (Sandbox Code Playgroud)

在my_api.api_urls.py中:

urlpatterns = [
    url(r'^some-endpoint/$', api_views.MyView.as_view(), name='some'),
]
Run Code Online (Sandbox Code Playgroud)

不知何故,我无法撤消这些网址.为什么我不能这样做?我得到一个NoReverseMatch例外.

reverse('some')
Run Code Online (Sandbox Code Playgroud)

我无法围绕django的命名空间,但不应该只使用最后定义的路线?如果我从主url中删除命名空间参数,一切正常.

编辑

也不工作:

reverse('v1:some') 
Run Code Online (Sandbox Code Playgroud)

我也可以补充说,在我的主urls文件中,我将多个url文件包含在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')),
...
Run Code Online (Sandbox Code Playgroud)

v1k*_*k45 5

在django中反转url名称时,必须使用namespace:url-namepattern 进行反转.

您的反向调用应如下所示:

reverse('v1:some')
Run Code Online (Sandbox Code Playgroud)

请参阅:如何reverse()在django中使用

更新:您在多个url条目上使用相同的命名空间.保持url名称空间的唯一性.