Скажем, у меня есть проект Django с тремя приложениями: foo, bar и clue. Я пытаюсь следовать соглашениям о многократных использованиях, поэтому foo и bar не зависят от (и ничего не знают) друг о друге или на клее. Клей содержит код для интеграции двух других приложений на сайт.
Foo поставляет тег шаблона, который я хочу включить на одну из страниц, предоставленных баром. На странице просмотра страницы можно передать альтернативный шаблон. Я делаю шаблон в клее, который расширяет шаблон шаблона и включает тег шаблона из foo. Чтобы передать мой новый шаблон для просмотра, мне нужно изменить запись urlconf, которая указывает на нее.
Мой проект urlconf выглядит примерно так:
urlpatterns = patterns('',
(r'^$', include('glue.urls')),
(r'^foo/', include('foo.urls')),
(r'^bar/', include('bar.urls')),
)
Какой самый элегантный способ передать альтернативный шаблон (или любые другие аргументы произвольного представления, если на то пошло) на представление в строке? Я не хочу изменять bar urlconf напрямую, так как это будет зависеть от клея.
Единственный другой способ, о котором я могу думать, - удалить include('bar.urls')
, скопировать шаблоны url в bar urlconf в проект urlconf и изменить интересующий меня шаблон. Однако этот подход нарушает принцип DRY. Есть ли другое решение, которое мне не хватает?