Подключение интерфейса администратора Django

В предыдущих мануалах этой серии Django вы узнали, как запустить приложение Django, связать его с MySQL и создать модели баз данных Posts и Comments.

Читайте также:

Данный мануал научит вас подключать интерфейс администратора Django для управления блогом. Интерфейс администратора Django предварительно поставляется  вместе с пользовательским интерфейсом, который предназначен для управления контентом веб-сайта.

Стоит отметить: официальная документация Django указывает, что автоматически созданный интерфейс администратора Django идеально подходит для внутреннего использования организации, однако создавать веб-приложение на его основе крайне не рекомендуется. Чтобы сделать интерфейс более ориентированным на процесс, лучше написать собственные виды для администраторской части.

1: Включение Django Admin

Чтобы включить Django Admin, нужно добавить его в список INSTALLED_APPS в файле settings.py.

Перейдите в каталог:

cd ~/my_blog_app/blog/blog/

Теперь откройте settings.py:

nano settings.py

Если django.contrib.admin еще нет в списке INSTALLED_APPS, добавьте в список эту строку. Список должен выглядеть так:

...
# Application definition
INSTALLED_APPS = [
'blogsite',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
...

Сохраните и закройте файл.

Затем откройте файл urls.py:

nano urls.py

Этот файл должен выглядеть так:

...
from django.conf.urls import url
from django.contrib import admin
urlpatterns = [
url(r'^admin/', admin.site.urls),
]

Как видите, значение r^admin/ передается аргументу url. Так Python выполняет регулярные выражения.

Регулярные выражения – это способ поиска или сопоставления строковых шаблонов. Python использует r, чтобы интерпретировать следующий текст после символа каретки (^) как необработанную строку. Другими словами, специальные символы, такие как слеш (/), будут интерпретироваться так, как они есть, что полезно в случае с urls.

Теперь, когда веб-проект Django имеет соответствующий код в файлах settings.py и urls.py, у приложения есть доступ к моделям и пользовательскому интерфейсу администратора.

2: Проверка установки Django Admin

Теперь нужно мигрировать модели в БД, чтобы она смогла обрабатывать новые модели Admin.

Откройте каталог, в котором хранится файл manage.py.

cd ~/my_blog_app/blog

Запустите команду migrate, чтобы обновить модели (это нужно делать всякий раз, когда вы вносите какие-либо изменения в модели).

python3 manage.py migrate

Команда должна вернуть следующий вывод, потому что модель admin уже была добавлена, как вы видели при навигации по разделам INSTALLED_APPS файла settings.py.

Operations to perform:
Apply all migrations: admin, auth, blogsite, contenttypes, sessions
Running migrations:
No migrations to apply.

Теперь можно запустить сервер с помощью команды:

python3 manage.py runserver your-server-ip:8000

Затем можно открыть URL панели администратора в браузере:

http://your-server-ip:8000/admin/

На экране появится форма входа.

Если это так – вы успешно включили интерфейс администратора.

Однако пока что у вас нет аккаунта администратора. Создайте такой аккаунт, чтобы войти в интерфейс.

3: Создание учетной записи администратора

В браузере открывается страница входа в интерфейс, но пока что у вас нет учетных данных. Создать эти данные совсем не сложно.

Django предоставляет простой способ создания учетной записи суперпользователя. Для этого нужно запустить файл manage.py.

python3 manage.py createsuperuser

После этого будет запрошено имя пользователя, электронная почта и пароль. В данном руководстве используются условные данные admin_user, 8host@example.com и admin123. Укажите свои учетные данные, используйте сложный пароль.

Username (leave blank to use 'root'): admin_user
Email address: 8host@example.com

Затем программа попросит дважды ввести пароль администратора в поле Password. При этом в поле не будут отображаться никакие символы – это делается в целях безопасности. Введя пароль, нажмите enter.

Password:
Password (again):

На данный момент у вас есть учетная запись администратора admin_user с паролем admin123.

Давайте попробуем войти в интерфейс администратора.

Откройте в браузере страницу:

http://your-server-ip:8000/admin/

Затем войдите в интерфейс, указав имя и пароль, которые вы только что создали. Вы получите доступ к странице Site administration.

Теперь нужно подключить блог к панели администратора.

4: Создание URL-шаблонов для моделей Post и Comment

Как видите, интерфейс администратора до сих пор не видит ваше приложение. Чтобы изменить это, нужно добавить и зарегистрировать блог с соответствующими моделями Post и Comment.

Создайте пустой файл urls.py в каталоге blogsite:

touch ~/my_blog_app/blog/blogsite/urls.py

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

Перейдите к каталогу, в котором хранится файл urls.py.

cd ~/my_blog_app/blog/blogsite/

Откройте файл:

nano urls.py

Добавьте в него такой код:

from django.conf.urls import url
from . import views
urlpatterns = [
url(r'^$', views.posts, name='posts'),
url(r'^$', views.comments, name='comments')
]

Это выражения шаблонов URL, с помощью которых приложение может получить доступ к представлениям (views) для Posts и Comments (пока что их нет, но об этом речь пойдет в одном из мануалов данной серии).

5: Подключение блога к Django Admin

Подключив блог к интерфейсу администратора, вы сможете увидеть ссылки на Posts и Comments в панели. Как вы уже видели, на данный момент панель отображает только ссылки на Groups и Users.

Зарегистрируйте модели Posts и Comments в файле admin в каталоге blogsite.

Откройте каталог:

cd ~/my_blog_app/blog/blogsite

Затем создайте файл admin.py:

touch admin.py

Откройте его:

nano admin.py

Добавьте в файл следующие строки:

from django.contrib import admin
from blogsite.models import Post
from blogsite.models import Comment
admin.site.register(Post)
admin.site.register(Comment)

Сохраните и закройте файл.

Теперь модели Post и Comment зарегистрированы в панели администратора. Это позволит интерфейсу администратора выбирать эти модели и показывать их пользователю, который имеет доступ к панели.

6: Проверка настроек

Теперь, когда вы добавили соответствующий код Python, запустите сервер. Откройте страницу:

http://your-server-ip:8000/admin

и войдите в аккаунт администратора, используя свои учетные данные.

На странице Site authorization вы увидите, что кроме моделей Authorization and authentication появится группа Blogsite, в которой будут ваши модели блога.

Заключение

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

Интерфейс администратора Django позволяет создавать сообщения и отслеживать комментарии в блоге.

В следующем мануале этой серии вы научитесь создавать представления для приложения.

Tags: