Django Admin: использование разных шаблонов для двух админ-сайтов - PullRequest
6 голосов
/ 24 марта 2011

У меня есть проект Django с двумя разными админ-сайтами (как описано в документации )

Я бы хотел иметь разные пользовательские шаблоны для каждого из них.Я знаю, как переопределить пользовательский шаблон, поместив html-файлы в каталог myproject / templates / admin /.Однако оба админ-сайта используют эти шаблоны!

Я не понимаю, как указать другой набор пользовательских шаблонов.

В идеале мне бы хотелось иметь:

# For first admin site
myproject/templates/admin-a/
   base.html
   base_site.html

и:

# For second admin site
myproject/templates/admin-b/
   base.html
   base_site.html

Есть идеи?

Спасибо, Стефан

1 Ответ

1 голос
/ 25 марта 2011

первая опция будет иметь два ModelAdmin класса, один из которых получен из второго, с некоторыми дополнительными параметрами, определяющими шаблоны, вот часть кода администратора:

# Custom templates (designed to be over-ridden in subclasses)
add_form_template = None
change_form_template = None
change_list_template = None
delete_confirmation_template = None
delete_selected_confirmation_template = None
object_history_template = None

вышеуказанные переменные могут быть установлены в вашем классе администратора.

Второй способ - передать базовое имя шаблона в шаблон, а затем использовать его (переменную) в качестве параметра для тега шаблона extends. Документация здесь.

третий вариант - запуск двух экземпляров кода, но с двумя конфигами с разными переменными настройки TEMPLATE_DIRS, первый, например ::

TEMPLATE_DIRS = ('templates-a',)

второй

TEMPLATE_DIRS = ('template-b', 'template-a')

Наличие обоих каталогов шаблонов дает вам опцию fallback , поэтому вы будете определять только те шаблоны, которые отличаются.

Третий вариант проще всего реализовать (без изменений в коде), но требует одновременной работы двух отдельных экземпляров (больше системных ресурсов потребляется).

...