Django book: активация панели управления

Автор: | 12/03/2015
 

django_logo_2Глава 4

Оглавление

Для некоторых веб-сайтов панель администратора является необходимой частью функциональности. Это веб-интерфейс, доступ к которому ограничен только для доверенных лиц – администраторов сайта, который позволяет добавлять, редактировать и удалять содержимое сайта. Самые распространённые примеры – интерфейс, через который добавляются посты в блог, панели управления комментариями, утилиты, которые позволяют посетителям обновлять их сообщения на сайте.

Однако, с подобными панелями связано несколько проблем: их создание очень скучный процесс. Веб-разработка интересна, когда вы создаёте что-то для общего доступа, но создание панели администрирования сайтом – всегда один и тот же процесс. Вам требуется авторизовать пользователей, отобразить и обработать какие-то формы, проверить вводимые данные и так далее. Это скучно, и вам приходится повторять одно и то же каждый раз.

Какой подход у Django к таким задачам? Django всё делает за вас – от вас потребуется лишь написать несколько строк. С Django создание такой панели – уже решённая задача.

В этой главе мы рассмотрим панель управления Djnago. Django считывает данные в ваших моделях, и предоставляет отличный веб-интерфейс для управления,  который администраторы могут начинать использовать немедленно. В этой главе мы рассмотрим как его активировать, использовать и настраивать.

Мы рекомендуем вам прочитать эту главу в любом случае, даже если вы не намереваетесь использовать родную панель управления Django, так как тут мы мы рассмотрим несколько новых концепций, которые касаются всего Django-сайта.

Пакеты django.contrib

Панель управления в Django – часть большого набора функциональности, которая называется django.contrib – это часть кода Django, которая включает в себя различные полезные расширения для фреймворка. Вы можете представлять себе django.contrib как аналог стандартной библиотеки Python – общая, хотя и необязательная для использования, реализация некоторых распространённых действий. Она включена в Django по умолчанию, поэтому вы можете не заниматься изобретением велосипеда для ваших приложений.

Панель управления администратора является первой частью набора django.contrib, которую  мы рассмотрим в этой книге. Технически она называется django.contrib.admin. Другие возможности django.contrib – это система авторизации пользователей (django.contrib.auth), поддержка анонимных сессий (django.contrib.sessions) и даже система комментариев (django.contrib.comments). Вы узнаете ещё больше возможностей django.contrib, когда ближе познакомитесь с Django, а некоторые мы рассмотрим далее в нашей книге. Пока что – просто запомните, что Django устанавливается с множеством полезных расширений, а django.contrib – место их обитания.

Активация панели администратора

Панель управления Django совершенно необязательна к использованию, так как не все сайты нуждаются в ней. Поэтому – она отключена по умолчанию, и вам необходимо выполнить несколько действий, что бы включить её.

Для начала – отредактируйте ваш файл settings.py:

  1. Добавьте 'django.contrib.admin' к списку INSTALLED_APPS (порядок в INSTALLED_APPS не имеет значения, но предпочтительно хранить его в алфавитном порядке, что бы упростить чтение);
  2. Убедитесь, что в INSTALLED_APPS включены 'django.contrib.auth', 'django.contrib.contenttypes','django.contrib.messages' и 'django.contrib.sessions'. Панель управления Django требует наличия этих трёх модулей.
  3. Убедитесь, что MIDDLEWARE_CLASSES  сдержит: 'django.middleware.common.CommonMiddleware','django.contrib.messages.middleware.MessageMiddleware','django.contrib.sessions.middleware.SessionMiddleware' и 'django.contrib.auth.middleware.AuthenticationMiddleware'.

В результате у вас должен получиться такой набор настроек:

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
#    'django.contrib.sites',
    'django.contrib.messages',
#    'django.contrib.staticfiles',
    # Uncomment the next line to enable the admin:
    # 'django.contrib.admin',
    # Uncomment the next line to enable admin documentation:
    # 'django.contrib.admindocs',
    'books',
    'django.contrib.admin',
)
MIDDLEWARE_CLASSES = (
    'django.middleware.common.CommonMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
#    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
)

Далее, запустите python manage.py syncdb. Это действие создаст несколько дополнительных таблиц в базе данных, которые используются панелью управления. При первом выполнении syncdb с добавленным в INSTALLED_APPS модулем 'django.contrib.auth' вам будет предложено создать суперпользователя сайта. Если вы не сделаете это сейчас – вы можете добавить его позже, выполнив python manage.py createsuperuser. Иначе – вы не сможете авторизоваться в панели управления:

$ python manage.py syncdb
Creating tables ...
Creating table auth_permission
Creating table auth_group_permissions
Creating table auth_group
Creating table auth_user_user_permissions
Creating table auth_user_groups
Creating table auth_user
Creating table auth_message
Creating table django_content_type
Creating table django_session
Creating table django_admin_log

You just installed Django's auth system, which means you don't have any superusers defined.
Would you like to create one now? (yes/no): yes
Username (Leave blank to use 'setevoy'):
E-mail address: [email protected]
Password:
Password (again):
Superuser created successfully.
Installing custom SQL ...
Installing indexes ...
No fixtures found.

Третье – добавьте URL для панели управления в ваш URLconf (файл urls.py, как вы помните). По умолчанию файл urls.py, сгенерированный при выполнении django-admin.py startproject содержит закомментированный код для панели управления Djnago, и вам надо только убрать комментарии. В результате у вас должно получиться что-то вроде следующего:

...
from django.contrib import admin

admin.autodiscover()

urlpatterns = patterns('',
    ...
    url(r'^admin/', include(admin.site.urls)),
)

Теперь вы можете увидеть панель управления в работе. Запустите сервер разработки python manage.py runserver, и откройте страницу http://127.0.0.1:8000/admin/ в браузере:

Django book: активация панели управления

 

Продолжение – Django book: использование панели управления.