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

Админ-панель добавляется в проект автоматически при создании проекта с помощью шаблона - startproject. Если вы не используете шаблон, то вам нужно указать для неё настройки самостоятельно. См. в документации.

Чтобы убедиться, что в проект добавлена админ панель, нужно проверить пару переменных)

# settings.py
INSTALLED_APPS = [
		...
    'django.contrib.admin'
    ...
]
 
# urls.py проекта
 
urlpatterns = [
		...
    path('admin/', admin.site.urls),
    ...
]

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

Команда python manage.py createsuperuser создаёт суперпользователя в Django-проекте.

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

Предварительные условия:

  • Система аутентификации Django (django.contrib.auth) должна быть включена в настройку INSTALLED_APPS вашего проекта.

Интерактивное использование:

  1. Запустите python manage.py createsuperuser.
  2. Вам будет предложено предоставить:
    • Имя пользователя (обязательно)
    • Адрес электронной почты (необязательно)
    • Пароль (обязательно)
  • Неинтерактивное использование (для сценариев)

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

    • Установите эти переменные среды:
      • DJANGO_SUPERUSER_USERNAME: Желаемое имя пользователя
      • DJANGO_SUPERUSER_EMAIL: Желаемый адрес электронной почты (необязательно)
      • DJANGO_SUPERUSER_PASSWORD: Желаемый пароль
    • Важно: Если вы не укажете DJANGO_SUPERUSER_PASSWORD, суперпользователь не сможет войти в систему, пока вы не установите для него пароль вручную.
    • Не рекомендуется хранить переменные среды для суперпользователя в файле конфигурации, доступном в системе контроля версий (например, .env). Это небезопасно, так как пароль суперпользователя будет доступен всем, кто имеет доступ к коду.

Опции:

  • --noinput--no-input: говорит команде не запрашивать ввод пользователя, а использовать значения из переменных среды.
  • --username USERNAME: Заранее указывает имя пользователя.
  • --email EMAIL: Заранее указывает адрес электронной почты.
  • --database DATABASE: Указывает конкретную базу данных, в которой вы хотите создать суперпользователя.

Настройка языка и заголовков админ-панели

За настройку языка в админ-панели (и в целом за локализацию приложения) отвечает переменная **LANGUAGE_CODE** = 'en-us' в файле setting.py. Изменив значение 'en-us' на ‘ru-RU’ язык изменится на русский, причем конкретно на его вариант, используемый в России.

Для того, чтобы изменить заголовок ‘Django administration’ на свой заголовок, в файле admin.py, используем следующую переменную - admin.site.site_header = ‘Пульт управления’.

Чтобы изменить подзаголовок, в том же файле используем команду - admin.site.index_title = ‘’

Регистрация модели в админ-панели и настройка её имени

  1. Откройте файл admin.py в приложении Django.

  2. Импортируйте модели, которые вы хотите зарегистрировать в административной панели, и класс admin.

    Например:

    from django.contrib import admin
    from .models import MyModel
  3. Зарегистрируйте вашу модель с помощью метода admin.site.register().

    Например:

    admin.site.register(MyModel)

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

class MyModelAdmin(admin.ModelAdmin):
    list_display = ['field1', 'field2', 'field3']
    search_fields = ['field1', 'field2']
    list_filter = ['field1']

Зарегистрируйте вашу модель, указав класс администратора с помощью метода admin.site.register().

admin.site.register(YourModel, YourModelAdmin)

Это также можно сделать через декоратор

from django.contrib import admin
from .models import MyModel
 
@admin.register(MyModel)
class MyModelAdmin(admin.ModelAdmin):
    pass

Чтобы настроить имя, которое отображается у модели в админ-панели, используйте:

class Post(models.Model):
    ...
 
    class Meta:
        verbose_name = 'Woman' # для единственного числа
        verbose_name_plural = 'Women' # для множественного числа
        ...

Note

Обратите внимание, что при просмотре объекта модели в админ-панели, нам доступна кнопка “Смотреть на сайте”, её отображение зависит от наличия у модели метода - get_absolute_url().

Также можно настроить отображение имени самого приложения:

# apps.py
 
from django.apps import AppConfig
 
class MyAppConfig(AppConfig):
    **verbose_name = 'Main functionality'**
    ...
 

〰〰〰 𓆝 𓆟 𓆞 𓆝 𓆟 𓆝 𓆟 𓆞 〰〰〰