Python: Разработка на фреймворке Django
Теория: Django Admin
Создание раздела администратора, через который пользователи смогут добавлять, изменять и удалять данные — утомительная работа. Она не требует творческого подхода. По этой причине Django полностью автоматизирует создание раздела администратора на основе моделей.
Django разрабатывался с упором на разделение сайта на две части: редактирование контента и просмотр контента. В этом уроке мы разберем работу с Django Admin, который администраторы сайта используют, чтобы добавлять контент на сайт. И он будет отображаться для всех посетителей сайта. Django Admin не предназначен для использования обычными посетителями, это место для управления сайтом.
Создание суперпользователя
Если мы посмотрим на наш главный файл urls.py, то увидим, что по умолчанию раздел администратора у нас подключен:
Если перейти по данному адресу, откроется страница для входа в раздел администратора:
Чтобы войти в раздел администратора, нам необходимо иметь учетную запись пользователя со статусом Staff. Мы можем создать учетную запись superuser, у которой есть полный доступ к сайту и все необходимые разрешения. Для этого выполним следующую команду и заполним информацию о себе:
Теперь мы можем зайти в админку под созданной учетной записью:
В этом разделе мы видим все наши модели, которые сгруппированы по установленному приложению. Пока мы видим несколько типов редактируемого контента: группы и пользователи. Они предоставляются django.contrib.auth платформой аутентификации, которая поставляется Django.
Регистрация моделей
Чтобы добавить в админку наши модели для редактирования, нам нужно отредактировать файл admin.py. Он расположен внутри приложения:
Мы зарегистрировали нашу модель в админке, и при обновлении страницы у нас появится новый раздел:
Теперь через новый раздел мы можем управлять данными в модели: добавлять, редактировать и удалять. Но если откроем список статей, увидим следующие названия:
Такие названия задаются методом __str__, который по умолчанию состоит из названия класса и id записи в базе данных. Чтобы привести данный список к более читаемому и понятному виду, нам нужно в классе модели переопределить данный метод:
В данном примере мы указываем, что в качестве названия объекта нужно возвращать значение поля name. Так в качестве названия мы можем использовать любые поля, их комбинации или брать поля из связанных моделей. Теперь наш список будет выглядеть более читаемым для человека:
Настройка отображения
Возможности Django Admin на этом не заканчиваются. Например, при помощи дополнительных параметров можно производить фильтрации списков по параметрам, ограничивать список выдачи по авторам, организовывать поиск.
Попробуем добавить поисковую форму, чтобы можно было найти нужную статью по названию. Для этого изменим содержание файла admin.py:
Мы добавили класс, который описывает дополнительные свойства для отображения и работы с нашей моделью в разделе администратора. В данном случае мы указали поле search_fields, в которое передали списком названия полей. По ним будет осуществляться поиск. Всю остальную работу по добавлению поля для ввода поискового запроса, контекстному поиску по выбранным полям на себя берет Django Admin:
Мы можем улучшить читаемость нашего кода, если воспользуемся декоратором @admin.register(). Он позволяет связать модель с классом и провести регистрацию модели в разделе администратора:
Еще добавим отображение в списке статей даты публикации и фильтрацию по данному полю:
Кроме этого мы можем настраивать разделение на секции, выделять подробное представление, работать со связанными записями, управлять отображением полей.
Django Admin — мощный инструмент, с помощью которого можно автоматизировать создание административной части сайта, просмотра, обновления и удаления записей. Это позволяет сэкономить много времени в процессе разработки и упростить тестирование моделей.


