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
вашего проекта.
Интерактивное использование:
- Запустите
python manage.py createsuperuser
. - Вам будет предложено предоставить:
- Имя пользователя (обязательно)
- Адрес электронной почты (необязательно)
- Пароль (обязательно)
-
Неинтерактивное использование (для сценариев)
При развертывании вашего приложения на сервере или в облаке вы можете создать суперпользователя автоматически без необходимости вручную вводить данные.
- Установите эти переменные среды:
- 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 = ‘’
Регистрация модели в админ-панели и настройка её имени
-
Откройте файл
admin.py
в приложении Django. -
Импортируйте модели, которые вы хотите зарегистрировать в административной панели, и класс
admin
.Например:
from django.contrib import admin from .models import MyModel
-
Зарегистрируйте вашу модель с помощью метода
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'**
...
〰〰〰 𓆝 𓆟 𓆞 𓆝 𓆟 𓆝 𓆟 𓆞 〰〰〰