В поставке Django поставляется набор инструментов для настройки встроенных шаблонов интерфейса администратора, которые мы кратко рассмотрим, но для остальных задач (таких как порядок работы с интерфейсом или гранулированность прав доступа), вам потребуется прочитать раздел «Создание своих представлений».
Сейчас давайте рассмотрим несколько быстрых способов настройки вида (и, частично, поведения) интерфейса администратора. В главе «Интерфейс администратора Django» описано несколько наиболее общих задач: «ребрендинг» интерфейса (для тех островолосых боссов, которые ненавидят голубой цвет) и реализация собственных форм.
Далее появляется цель, для которой надо изменить шаблоны для определённого элемента. Каждое представление интерфейса администратора — списки изменений, формы редактирования, страницы подтверждения операции удаления и страницы с историей — имеет ассоциированный шаблон, который может быть переопределён рядом способов.
Первый способ — можно переопределить шаблон глобально. Представление ищет шаблон, используя стандартный механизм загрузки шаблонов, таким образом, если вы создадите шаблоны в одном из ваших шаблонных каталогов, Django подгрузит их вместо стандартных. Эти глобальные шаблоны перечислены в таблице «Глобальные шаблоны интерфейса администратора»:
Таблица 17.1. Глобальные шаблоны интерфейса администратора
| Представление | Имя базового шаблона |
|---|---|
| Список изменений | admin/change_list.html |
| Форма редактирования | admin/change_form.html |
| Страница подтверждение операции удаления | admin/delete_confirmation.html |
| История объекта | admin/object_history.html |
Однако большую часть времени вам будет требоваться изменить шаблон для единственного объекта или приложения, т.е., не глобально. Следовательно, каждое представление сначала ищет специфичные для модели или приложения шаблоны. Эти представления производят поиск в таком порядке:
admin/<app_label>/<object_name>/<template>.htmladmin/<app_label>/<template>.htmladmin/<template>.html
Например, представление формы редактирования для модели
Book в приложении books
ищет шаблоны так:
admin/books/book/change_form.htmladmin/books/change_form.htmladmin/change_form.html
Большую часть времени вы будете использовать первый вариант для переопределения шаблона для отдельной модели. Это лучше всего делать через расширение базового шаблона и добавления информации в один из блоков, определённых в этом шаблоне.
Например, нам требуется добавить небольшой текст помощи наверх страница с книгами. Это может выглядеть так как показано на рисунке «Изменённая форма редактирования»:
Это очень легко сделать — просто создайте шаблон с
именем
admin/bookstore/book/change_form.html и
добавьте в него следующий код:
{% extends "admin/change_form.html" %}
{% block form_top %}
<p>Insert meaningful help message here...</p>
{% endblock %}
Все эти шаблоны определяют ряд блоков, которые вы можете
переопределять. Как и в случае с большинством программ, лучшей
документацией является код, мы рекомендуем вам просмотреть
шаблоны административного интерфейса (они находятся в
django/contrib/admin/templates/), там
много вкусного и свежего.
Чаще всего изменения в шаблоны отдельных моделей вносят для того, чтобы добавить свой JavaScript на страницу — возможно, для реализации специализированного элемента или для выполнения какой-то работы на стороне клиента.
К счастью, это тоже не сложно. Каждый шаблон интерфейса администратора определяет {% block extrahead %}, который вы можете использовать для внедрения дополнительной информации в элемент <head>. Например, если вам требуется подключить библиотеку jQuery к странице с историей, делайте так:
{% extends "admin/object_history.html" %}
{% block extrahead %}
<script src="http://media.example.com/javascript/jquery.js"
type="text/javascript"></script>
<script type="text/javascript">
// code to actually use jQuery here...
</script>
{% endblock %}
Замечание
Мы не знаем зачем вам понадобилась jQuery на странице с историей, но данный пример можно применить к любому шаблону интерфейса администратора.
Вы можете использовать этот подход для подключения любых JavaScript элементов, которые могут вам понадобится.
| Пред. | Уровень выше | След. |
| Глава 17. Расширение интерфейса администратора | Начало | Создание своих представлений |
0 comments | Make a comment