Django: Как мне переопределить URL-адреса, предоставленные приложением, в моем проекте urlconf?

Допустим, у меня есть проект 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. Есть ли другое решение, которое мне не хватает?

20
задан Chris Acheson 16 February 2012 в 13:44
поделиться