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