Ես օգտագործում եմ django-rest-framework-ը NamespaceVersioning-ի հետ: Իմ հիմնական 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'),
]
Ինչ-որ կերպ ես չեմ կարողանում շրջել այս URL-ները: Ինչու ես չեմ կարող պարզապես դա անել: Ես ստանում եմ NoReverseMatch
բացառություն:
reverse('some')
Ես չեմ կարող գլուխս փաթաթել django-ի անվանատարածքի շուրջ, բայց արդյոք այն չպետք է օգտագործի միայն վերջին սահմանված երթուղին: Եթե ես հիմնական url-ից հանեմ անվանատարածքի փաստարկը, ամեն ինչ լավ է աշխատում:
խմբագրել
Նաև չի աշխատում.
reverse('v1:some')
Ես կարող եմ նաև ավելացնել, որ իմ հիմնական urls ֆայլում ես ներառում եմ բազմաթիվ urls ֆայլեր 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')),
...
from rest_framework.reverse import reverse
-ի հակադարձ գործառույթը 05.04.2016url(r'^api/v1/', include(('myapi.urls', 'myotherapi.urls',), namespace='v1'))
? Կարո՞ղ եք պատասխանի վրա գրել աշխատանքային ծածկագիրը: 21.07.2017url(r'^api/v1/', include('main.api_urls_v1', namespace='v1'))
. Իսկ api_urls_v1-ում՝url_patterns = [url(r'app1/', include('app1.api.api_urls')), url(r'app2/', include('app2.api.api_urls_v1'))]
: Այս մոտեցման դրական կողմն այն է, որ դուք կարող եք ինքնուրույն լարել տարբերակները յուրաքանչյուր հավելվածի համար: Բացասական կողմն այն է, որ դա մի քիչ խոսուն է: 21.07.2017