Курс по Django: https://stepik.org/a/183363
Архив проекта: 37_sitewomen.zip
На данный момент
мы с вами познакомились с тремя важнейшими компонентами фреймворка Django – это модели (models), шаблоны (templates) и
представления (views). Также научились определять маршруты
для страниц нашего сайта. Пришло время сделать следующий шаг и затронуть один
из ключевых элементов фреймворка Django – работу со встроенной
админ-панелью. Если мы посмотрим в файл конфигурации settings.py, то в коллекции
INSTALLED_APPS увидим подключение админки к нашему сайту. А в файле urls.py маршрут для
обращения к админ-панели. Давайте перейдем по нему:
http://127.0.0.1:8000/admin/
Видим, что фреймворк
по умолчанию использует английский язык. Чтобы переключиться на русскую
локализацию, нужно в пакете конфигурации в файле settings.py изменить
константу LANGUAGE_CODE, установив ее в значение:
И при обновлении
страницы увидим русскоязычный вариант админ-панели.
С помощью
встроенной админки можно решать практически все типовые задачи, которые нам
могут потребоваться. Это и создание пользователей с разными полномочиями
(ролями), отображение всех наших приложений, добавление, удаление и изменение
записей и так далее. Она подойдет для большинства сайтов так, что создавать
свою админ-панель в Django попросту нет необходимости.
Итак, для входа
нам нужно ввести имя пользователя и пароль. Но у нас пока их нет и вообще нет
ни одного зарегистрированного пользователя в админ-панели. Поэтому, сначала
необходимо создать суперпользователя – администратора сайта. Для этого я
перейду в терминал и в новой вкладке консоли выполню команду (из каталога
проекта sitewomen):
python manage.py
createsuperuser
Здесь нам будет
предложено указать логин (имя пользователя). В учебных целях я укажу root. Далее, нужно
ввести адрес электронной почты, пусть это будет root@mymail.ru. (Почта может
быть не существующей в учебном проекте, а вообще, нужно указывать адрес
реальной почты, на которую будут приходить и отправляться служебные сообщения).
И, наконец, вводим пароль (1234) и повторяем его. Конечно, такой простой пароль
и имя пользователя я использую сугубо в рамках этих занятий. В реальности
старайтесь указывать необычные, уникальные имена и большой, сложный пароль,
иначе, получив доступ к админ-панели, злоумышленник легко нарушит работу вашего
сайта.
Все,
суперпользователь создан и мы теперь можем войти в админку, указав root и пароль 1234. На
главной странице мы видим два зарегистрированных приложения: «Группы» и
«Пользователи». То есть, мы можем создавать новых пользователей уже
непосредственно здесь, а также назначать им определенные группы.
Однако здесь нет
нашего приложения women. Почему? Дело в том, что его нужно
зарегистрировать, то есть, указать, что мы хотим его видеть в админ-панели. Для
этого откроем файл women/admin.py, который
отвечает за взаимосвязь приложения с админкой, где мы будем регистрировать наши
модели. Вначале импортируем их:
from .models import Women
и зарегистрируем модель Women:
admin.site.register(Women)
Возвращаемся в
админку и при обновлении главной страницы видим наше приложение и
зарегистрированную модель Women. Если щелкнуть по ней, то видим список
наших записей и здесь же можем их редактировать, удалять и добавлять новые. Причем
каждое поле отображается своим виджетом. Это очень удобно.
И, смотрите, при
выборе определенной записи, мы видим кнопку «Смотреть на сайте». Эта кнопка
появляется только тогда, когда в модели определена функция get_absolute_url(). Если мы ее
закомментируем и обновим админку, то эта кнопка пропадет. Так, что эта функция
достаточно часто используется в различных модулях фреймворка Django.
Давайте немного
настроим админ-панель, чтобы она выглядела приятнее и дружелюбнее. Первое, что
мы сделаем – это заменим заголовок админки на наше собственное. Для этого
перейдем в файл urls.py пакета
конфигурации и через объект admin.site переопределим
атрибут site_header следующим
образом:
admin.site.site_header = "Панель администрирования"
После обновления
страницы админ-панели видим этот новый заголовок.
Чтобы поменять
второй заголовок, следует переопределить атрибут index_title:
admin.site.index_title = "Известные женщины мира"
Далее, заменим
отображение модели Women на «Известные женщины». Для этого
перейдем в файл с моделями (women/models.py) и в классе Women пропишем
специальный вложенный класс Meta, который используется админкой для
более тонкой настройки модели:
class Women(models.Model):
...
class Meta:
verbose_name = 'Известные женщины'
Здесь verbose_name – это
специальный атрибут, отвечающий за название модели. Однако мы видим, что
админ-панель по прежнему добавляет латинскую s в конец нашего
имени, то есть, пытается сделать его множественное число. Чтобы явно указать,
как будет звучать название во множественном числе, определим еще один атрибут:
class Meta:
verbose_name = 'Известные женщины'
verbose_name_plural = 'Известные женщины'
Наконец,
поменяем отображение заголовка women приложения на другой: «Женщины мира».
Для этого перейдем в файл women/apps.py и в классе
конфигурации приложения пропишем атрибут:
class WomenConfig(AppConfig):
name = 'women'
verbose_name = 'Женщины мира'
Так стало
гораздо лучше. На следующем занятии мы продолжим настраивать админ-панель, в
частности, улучшим список отображаемых статей.
Курс по Django: https://stepik.org/a/183363