Хостинг Django от «Джино»
Table of contents

Настройка шаблонов интерфейса

В поставке 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>.html

  • admin/<app_label>/<template>.html

  • admin/<template>.html

Например, представление формы редактирования для модели Book в приложении books ищет шаблоны так:

  • admin/books/book/change_form.html

  • admin/books/change_form.html

  • admin/change_form.html

Настройка шаблонов для отдельных моделей

Большую часть времени вы будете использовать первый вариант для переопределения шаблона для отдельной модели. Это лучше всего делать через расширение базового шаблона и добавления информации в один из блоков, определённых в этом шаблоне.

Например, нам требуется добавить небольшой текст помощи наверх страница с книгами. Это может выглядеть так как показано на рисунке «Изменённая форма редактирования»:

Рисунок 17.1. Изменённая форма редактирования

Изменённая форма редактирования


Это очень легко сделать — просто создайте шаблон с именем 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

Чаще всего изменения в шаблоны отдельных моделей вносят для того, чтобы добавить свой 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 элементов, которые могут вам понадобится.


Ищем Python программистов

Found misprint?
Select it with the mouse and hit Enter
Ctrl-Enter
Processed:
33 1 199 25


The full repository of DjangoBook translation you can get on GitHub.
We appreciate your patches!

We are glad to hear your questions, comments or suggestions!
(Open in new tab)

Users number: 601

Русская группа

на поддержку перевода
Яндекс Яндекс.Деньги Хочу такую же кнопку
Ускорить процесс перевода!
ЯМ:41001223475816


© 2008-2012 Ruslan Popov @ gmail.com Powered by Django 1.2.5