EDIT: я использую rest_framework.reverse и предоставляю имя приложения, а не пространство имен для обратного просмотра.Пример обратного вызова:
reverse('api_app:system-detail', kwargs={...}, request=self.context.get('request'))
Итак, у меня есть проект django с одним приложением, и у меня есть два разных шаблона URL, привязанных к этому одному приложению.В настоящее время у меня это в основном работает, однако в некоторых случаях использование reverse () приводит к неверному пространству имен.Моя база urls.py выглядит следующим образом:
from django.conf.urls import url, include
from django.views.generic.base import RedirectView
urlpatterns = [
url(r'^api/', include('api_project.api_app.urls',
namespace='api')),
url(r'^beta/api/', include('api_project.api_app.urls',
namespace='beta')),
url(r'^$', RedirectView.as_view(url='api', permanent=False),
name='index')
]
РЕДАКТИРОВАТЬ: api_app.urls выглядит следующим образом:
from django.conf.urls import url
from rest_framework.urlpatterns import format_suffix_patterns
from . import views
from rest_framework.schemas import get_schema_view
schema_view = get_schema_view(title="Schema")
app_name = 'api_app'
urlpatterns = [
url(r'^$', views.APIRoot.as_view(), name='api-root'),
url(r'^schema/$', schema_view, name'api-schema'),
....
В большинстве случаев обратное работает, как ожидалось, например, использование / бета / конечная точка имеетссылки на странице, которые выглядят следующим образом:
/beta/endpoint/example
Однако в некоторых случаях использование / бета / конечная точка имеет ссылки вроде:
/api/endpoint/different-example
Мой вопрос меньше о том, как обратное определение определяет, какиепространство имен для использования, но вместо этого это подходящий способ использовать два пространства имен для одного и того же приложения?Это то, что я должен подходить совершенно по-другому?
Большая часть моих исследований пока не привела к большому успеху, поэтому я думаю, что это может быть в корне неправильным подходом.
Если с этим подходом все в порядке, мне любопытно, почему обратное противоречие в том пространстве имен, которое оно возвращает.