Django 5 для начинающих

Прогресс по курсу:  9/1004

5.3 Сайт администрирования
2 из 2 шагов пройдено

Создание сайта администрирования для моделей

Теперь, когда модель Post синхронизирована с базой данных, можно создать простой сайт администрирования, чтобы управлять постами блога.

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

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

Приложение django.contrib.admin уже вставлено в настроечный параметр INSTALLED_APPS, поэтому добавлять его нет необходимости.

 

Создание суперпользователя

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

python manage.py createsuperuser

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

Username (leave blank to use 'admin'): admin

Email address: admin@admin.com

Password: ********

Password (again): ********

И вы увидите такое сообщение об успехе:

Superuser created successfully.

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

 

Сайт администрирования

Следующей ниже командой запустите сервер разработки:

python manage.py runserver

Пройдите по URL-адресу http://127.0.0.1:8000/admin/ в своем браузере.
Вы должны увидеть страницу входа на сайт администрирования, как показано на рисунке:

Войдите на сайт администрирования, используя учетные данные пользователя, которые вы создали на предыдущем шаге.
Вы увидите индексную страницу сайта администрирования:

Модели Group и User, которые вы видите на приведенном выше скриншоте, являются частью встроенного в Django фреймворка аутентификации, расположенного в django.contrib.auth.

Если кликнуть по Users (Пользователи), то можно увидеть пользователя, которого вы создали ранее.

 

Добавление моделей на сайт администрирования

Давайте добавим модели блога на сайт администрирования.
Отредактируйте файл admin.py приложения blog, придав ему следующий вид:

from django.contrib import admin
from .models import Post

admin.site.register(Post)

Теперь перезагрузите сайт администрирования в своем браузере.
Вы должны увидеть свою модель Post на сайте, как показано ниже:

 Все достаточно просто, не правда ли? При регистрации модели на сайте администрирования будет получен удобный интерфейс, сгенерированный путем интроспекции созданных разработчиком моделей, позволяющий простым способом выводить списки, редактировать, создавать и удалять объекты.

Кликните по ссылке Add (Добавить) напротив Posts (Посты), чтобы добавить новый пост.
Вы увидите форму, которую Django сгенерировал для модели динамически, как показано ниже:

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

Заполним форму, обязательно установив у поля Status значение Published и кликните по кнопке Save(Сохранить). Вы будете перенаправлены на страницу списка постов с сообщением об успехе и только что созданным постом, как показано на рисунке ниже:


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

Понравилась задача, тест или урок? Поставьте лайк, поддержите курс. Ваша поддержка очень важна для нас.

Прикольно! Так как не копирую код а пишу все руками, вылезла ошибка при создании статьи - оказалось, вместо title  написал tite)))

Полезно искать ошибки, и так приятно, что каждый раз ее (ошибку) становится легче найти)))

Спасибо большое за такую практику, все очень круто!)))

slug мы тут прописываем вручную при создании, но он же должен автоматически прописываться, нет? Пользователь же не будет их сам писать

@Георгий_Тимофеев, в следующем шаге сделаем это

Скажите, пожалуйста, почему при создании поста через админку нет полей created и updated из модели Post?

@Мария_Тычинская, при использовании опций auto_now=True или auto_now_add=True, данные поля становятся доступными только для чтения(автоматически устанавливается опция editable=False), и не отображаются в админке.

@Дмитрий_Селезнев, спасибо!

подскажите плиз, где ошибка. У меня в проекте 2 приложения crud и blog, почему-то он пытается найти шаблон admin в urls.

@Руслан_Гаджиев, лучше создать новый проект, он будет дорабатываться на протяжении 4х модулей.