2016-04-05 7 views
1

私はNamespaceVersioningでdjango-rest-frameworkを使用します。私の主なurls.pyは、次のようになります。バージョニングされたAPIの名前空間付きURLの逆戻り

... 
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'), 
] 

はどういうわけか、私はこれらのURLを逆にすることができるように失敗します。なぜ私はこれをしないのですか?私は NoReverseMatch例外を得る。

reverse('some') 

私はdjangoの名前空間を頭で囲むことはできませんが、最終的に定義された経路を使用しないでください。メインURLから名前空間引数を削除すると、すべて正常に動作します。

編集

も機能していない:

reverse('v1:some') 

私も私のメインのURLのファイルで、私はAPI/V1 /プレフィックスに複数のURLのファイルを含めています、という、追加される場合があります:ジャンゴでのURL名を逆にすると

... 
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')), 
... 

答えて

4

、あなたはnamespace:url-nameパターンを逆にする必要があります。

あなたの逆の呼び出しは次のようになります。

reverse('v1:some') 

参照:How to use reverse() in django

を更新:あなたは、複数のURLエントリに同じ名前空間を使用しています。 URL名前空間を一意に保つ。

+0

はええとD'、私はすでにこれを試してみた、同様に動作しません... – Nuschk

+0

あなたはこのを試してみました:http://www.django-rest-framework.org/api-guide/versioning/#逆転URL版のためのバージョンapis ?? 'from rest_framework.reverse import reverse'のreverse関数を使用してください。 – v1k45

+0

いいえ、それについては分かりませんでした。試してみるよ、ありがとう。 – Nuschk

関連する問題