Django Админ-панель
Одной из отличительных особенностей Django является его надежный интерфейс администратора, который обеспечивает визуальный способ взаимодействия с данными.
Он появился потому, что Django изначально создавался как газетная CMS (система управления контентом). Идея заключалась в том, чтобы журналисты могли писать и редактировать свои статьи в админке, не прикасаясь к "коду". Со временем встроенное приложение администратора превратилось в фантастический, универсальный инструмент для управления всеми аспектами проекта Django.
Чтобы использовать админку Django, нам сначала нужно создать суперпользователя, который сможет войти в систему.
В консоли командной строки введите:
python manage.py createsuperuser
И ответьте на запрос об имени пользователя, электронной почте и пароле:
Когда вы введете пароль, он не будет виден в консоли командной строки из соображений безопасности.
Также красным текстом Django нам сообщает что наш пароль не подходит по правилам безопасности. Но так как мы используем Django в целях изучения, и не планируем деплой этого проекта, мы можем использовать простые пароли администратора.
Перезапустите сервер Django с помощью команды python manage.py runserver и в веб-браузере перейдите по адресу http://127.0.0.1:8000/admin/.
Вы должны увидеть экран входа в систему для администратора:
Войдите в систему, введя имя пользователя и пароль, которые вы только что создали.
Далее вы увидите домашнюю страницу администратора Django:
Но где же наше приложение для постов? Оно не отображается на главной странице админки!
Как мы должны явно добавить новые приложения в конфигурацию INSTALLED_APPS, так же мы должны обновить файл admin.py приложения, чтобы оно появилось в админке.
В текстовом редакторе откройте файл posts/admin.py и добавьте следующий код, чтобы отображалась модель Post:
from django.contrib import admin
from .models import Post
admin.site.register(Post)
Теперь Django знает, что он должен отобразить наше приложение posts и его модель базы данных Post на странице администратора.
Перезапустим сервер. Если вы обновите страницу в браузере, то увидите, что она появилась:
Давайте создадим первое сообщение на доске объявлений для нашей базы данных.
Нажмите на кнопку Add напротив Posts и введите собственное содержание в поле Text:
Затем нажмите кнопку SAVE, которая сохранит и перенаправит вас на главную страницу Post.
Однако если вы внимательно посмотрите, то обнаружите проблему: наша новая запись называется Post object (1), что не очень удобно!
Давайте изменим это. В файле posts/models.py добавьте новую функцию __str__ следующим образом:
from django.db import models
class Post(models.Model):
text = models.TextField()
def __str__(self): # new
return self.text[:50]
Это отобразит первые 50 символов текстового поля. Более подробнее о методах моделей мы поговорим в следующем разделе.
Если вы обновите страницу админ-панели в браузере, вы увидите, что она изменилась на гораздо более описательное и полезное представление нашей записи в базе данных.
Намного лучше! Лучшей практикой является добавление методов str() во все ваши модели для улучшения их читабельности.
Это метод Python, который применяется по умолчанию и возвращает строковый литерал с удобочитаемым представлением объекта. Django будет использовать этот метод для отображения имени объекта во многих местах, таких как его сайт администрирования.
Сброс пароля администратора
При использовании интерфейса администратора, может возникнуть такая неприятная ситуация как забытый пароль.
Не волнуйтесь, это легко можно исправить, для этого выполните команду:
python manage.py changepassword admin
И введите новый пароль и его подтверждение.
Также всегда можно создать ещё одного администратора с другим именем.