Административный интерфейс Django
Административный интерфейс - необходимая составная часть некоторых веб-сайтов. Так называется веб-интерфейс, доступный только уполномоченным администраторам сайта и позволяющий добавлять, редактировать и удалять содержимое сайта. Вот несколько типичных примеров: интерфейс, с помощью которого вы добавляете записи в свой блог; интерфейс для модерирования сообщений, оставляемых пользователями; средства, с помощью которых заказчики добавляют новые пресс-релизы на сайт, который вы для них разработали.
Но создавать административные интерфейсы скучно. Разработка части сайта, обращенной к публике, - удовольствие, а административные интерфейсы похожи друг на друга как две капли воды. Нужно аутен- тифицировать пользователей, отображать формы и обрабатывать отправленные с их помощью данные, проверять введенные данные и т. д. Утомительная, повторяющаяся работа.
А как фреймворк Django подходит к утомительной, повторяющейся работе? Он делает ее за вас - всего в паре строчек кода. Раз вы пользуетесь Django, можете считать, что задача написания административного интерфейса уже решена.
В этой главе речь пойдет об автоматическом административном интерфейсе Django. Для реализации этой функции система считывает метаданные из вашей модели и создает мощный готовый к эксплуатации интерфейс, с которым администраторы могут сразу же начать работу. Мы рассмотрим, как этот механизм активизировать, использовать и подстроить под свои нужды.
Мы рекомендуем прочитать эту главу, даже если административный интерфейс Django вам не нужен, поскольку в ней мы познакомим вас с некоторыми идеями, которые применяются в Django повсеместно.
Пакеты django.contrib
Автоматический административный интерфейс Django - часть более широкого набора приложений, именуемого django.contrib. В него входят разнообразные полезные дополнения к ядру каркаса. Можно считать django.contrib аналогом стандартной библиотеки Python - необязательная, принятая де-факто реализация часто встречающихся задач. Эти пакеты поставляются вместе с Django, чтобы избавить вас от необходимости изобретать велосипед при разработке собственных приложений.
Административный интерфейс - первый пакет из комплекта django. contrib, рассматриваемый в этой книге; строго говоря, он называется django.contrib.admin. В состав пакета django.contrib входят также система аутентификации пользователей (django.contrib.auth), поддержка анонимных сеансов (django.contrib.sessions) и даже система сбора замечаний пользователей (django.contrib.comments). По мере обретения опыта работы с Django вы познакомитесь и с другими возможностями, имеющимися в django.contrib, а некоторые из них мы еще обсудим в главе 16. Пока достаточно знать, что Django поставляется в комплекте с полезными дополнительными модулями, которые обычно находятся в django. contrib.
Активация административного интерфейса
необязателен, так как для многих сайтов эта функциональность не нужна. Следовательно, для активации его в своем проекте необходимо выполнить определенные действия.
Для начала внесите несколько изменений в файл параметров:
1. Добавьте ‘django.contrib.admin’ в параметр INSTALLED_APPS. (Порядок следования приложений в списке INSTALLED_APPS не имеет значения, но мы предпочитаем перечислять их по алфавиту, поскольку человеку так удобнее.)
2. Проверьте, что INSTALLED_APPS содержит строки ‘django.contrib.auth’, ‘django.contrib.contenttypes’ и ‘django.contrib.sessions’. Эти три пакета необходимы для работы административного интерфейса Django. (Если в процессе чтения вы следовали за нашими примерами, то по нашему совету вы закомментировали эти три строки в главе 5. Теперь раскомментируйте их.)
3. Проверьте, что параметр MIDDLEWARE_CLASSES содержит строки ‘django. middleware.common.CommonMiddleware’, ‘django.contrib.sessions.middleware. SessionMiddleware’ и ‘django. contrib. auth. middleware. AuthenticationMiddle- ware’. (В главе 5 их тоже было предложено закомментировать, теперь пора раскомментировать.)
Затем выполните команду python manage.ру syncdb. При этом в базу данных будут добавлены таблицы, необходимые для работы административного интерфейса. Если в списке INSTALLED_APPS присутствует строка ‘django.contrib.auth’, то при первом выполнении команды syncdb система предложит создать учетную запись суперпользователя. Если этого не сделать сразу, то потом придется отдельно запускать сценарий python manage.ру createsuperuser для создания административной учетной записи, без нее вы не сможете зайти в административный интерфейс. (Подвох: команда python manage.ру createsuperuser доступна, только если в списке INSTALLED_APPS присутствует строка ‘django.contrib.auth’.)
Далее добавьте URL административного интерфейса в конфигурацию URL (напомним, она находится в файле urls.ру). По умолчанию в файле urls.py, сгенерированном командой django-admin.py startproject, этот код закомментирован, и вам нужно всего лишь раскомментировать его. На всякий случай покажем фрагменты, которые должны присутствовать обязательно:
# Включить следующие инструкции импорта… from django.contrib import admin admin.autodiscover()
tt И этот шаблон URL.. . urlpatterns = patternsC’, tt …
(r1"admin/1, include(admin.site.urls)), U …
)
Покончив с настройкой, можно посмотреть на административный интерфейс Django в действии. Запустите сервер разработки (командой python manage, ру runserver, как это делалось в предыдущих главах) и укажите в броузере адрес http://127.0.0.1:8000/admin/.
Источник: Головатый А., Каплан-Мосс Дж. Django. Подробное руководство, 2-е издание. - Пер. с англ. - СПб.: Символ- Плюс, 2010. - 560 е., ил.