Вероятно, простой вопрос, и я просто что-то упускаю, но я застрял в идеях.
У меня есть проект Django, обслуживающий несколько сайтов с разными sessions.py
и совершенно разными ROOT_URLCONF
с. Один сайт управляет регистрацией пользователей, настройками аутентификации и профиля, другой сайт (в другом домене) выполняет функции файлового менеджера и так далее. Сайты используют одну и ту же базу данных, медиа и шаблоны. Все сайты используют одну и ту же базу пользователей, реализуя своего рода прозрачный механизм единого входа / единого выхода. Это как один большой сайт, охватывающий несколько доменов.
Проблема в том, что у меня много шаблонов {% url %}
в моих шаблонах, и они не работают, когда шаблон используется на других сайтах. И я бы хотел как можно больше избегать жесткого кодирования URL.
Например, на сайте A (a.example.org) у меня есть
url('^users/$', 'example.accounts.list_users', name='list_users'),
запись в URL-адресе А. Затем в каком-то шаблоне global_menu.html
у меня есть {% url list_users %}
, и, очевидно, он работает отлично, в результате получается "/users/
".
Теперь есть сайт B (b.example.org), который разделяет множество внутренних элементов с A. Чтобы иметь общий вид, я хочу использовать тот же global_menu.html
на сайте B и хочу, чтобы {% url list_users %}
вывод "http://a.example.org/users/
". Как лучше всего этого добиться?
В настоящее время я использую отдельные global_menu.html
для каждого сайта, но это нарушает принцип СУХОГО и не очень удобно. И да, я использую Django contrib.sites
framework с различными SITE_ID
s, определенными в settings.py
для каждого сайта, но пока еще не использую его где-либо еще.
Обновление : В настоящее время я думаю о переопределении тега url
или исправлении обезьян reverse()
, чтобы вызвать исходный тег, а при исключениях выполнить дополнительный поиск в некотором «списке внешних URI» , Если бы уже было что-то подобное - я был бы рад услышать.
Заранее спасибо за ответы!