Я боролся с изменением URL-адресов с помощью многоразового приложения Django. Вот основная схема моей проблемы.
Многоразовое приложение:
В файле urls.py
он имеет следующий шаблон:
url(r'^object-list/$', ObjectListView.as_view(), name='object-list')
Где-то в views.py
многоразового приложения есть следующий обратный вызов:
reverse('object-list')
Мой проект:
В проекте, в котором я хочу использовать это приложение, у меня есть другое конфликтующее имя представления, поэтому я помещаю в пространство имен URL-адреса приложения следующим образом:
url(r'^app-stuff/', include('app.urls', namespace='app'))
Проблема:
Это приводит к тому, что все обратные вызовы в приложении выдают NoReverseMatch
исключение при попытке поиска object-detail
, потому что URL-адрес теперь имеет имя app:object-detail
.
У меня есть доступ к рассматриваемому приложению, поэтому я могу изменить вызываемые им вызовы на reverse
, но я хотел бы сделать это таким образом, чтобы не было жесткого кодирования пространства имен. Я прочитал документацию по аргументам current_app
и namespace
функции include
, но не совсем понимаю, помогут ли они решить возникшую у меня проблему.
Мы очень ценим любые ваши предложения.