РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
586 of 818 menu

Класс AdminSite

Класс AdminSite представляет собой центральный объект административного интерфейса Django. Он используется для регистрации моделей и настройки представлений панели администратора. По умолчанию Django создает экземпляр этого класса с именем site, который доступен через модуль django.contrib.admin. Вы можете создать собственный подкласс AdminSite, чтобы изменить внешний вид, добавить пользовательские представления или настроить поведение административной панели.

Синтаксис

from django.contrib.admin import AdminSite class MyAdminSite(AdminSite): # настройка атрибутов и методов pass

Для создания собственного экземпляра административного сайта необходимо наследоваться от класса AdminSite и переопределить нужные атрибуты или методы. Затем экземпляр этого класса регистрируется в URL-конфигурации проекта.

Атрибуты класса

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

  • site_header - заголовок, отображаемый в верхней части страницы (по умолчанию "Django administration")
  • site_title - название, отображаемое в заголовке окна браузера (по умолчанию "Django site admin")
  • index_title - заголовок, отображаемый на главной странице административного интерфейса (по умолчанию "Site administration")
  • site_url - URL главной страницы сайта, отображаемый в верхней части панели (по умолчанию "/")
  • login_template - шаблон для страницы входа в административную панель
  • logout_template - шаблон для страницы выхода из административной панели

Пример . Настройка заголовков

Создадим собственный административный сайт с кастомными заголовками:

from django.contrib.admin import AdminSite class MyAdminSite(AdminSite): site_header = "Панель управления" site_title = "Админка моего сайта" index_title = "Добро пожаловать в панель управления"

Методы класса

Класс AdminSite предоставляет несколько ключевых методов:

  • register - регистрирует модель в административном интерфейсе
  • unregister - удаляет модель из административного интерфейса
  • get_urls - возвращает список URL-адресов для административного интерфейса
  • get_app_list - возвращает список приложений для главной страницы
  • has_permission - проверяет наличие прав доступа у пользователя

Пример . Регистрация модели

Зарегистрируем модель Article в собственном административном сайте:

from django.contrib.admin import AdminSite from myapp.models import Article class MyAdminSite(AdminSite): site_header = "Моя панель управления" site = MyAdminSite() site.register(Article)

Пример . Регистрация модели с ModelAdmin

Зарегистрируем модель Article с настройками ModelAdmin:

from django.contrib.admin import AdminSite from django.contrib.admin import ModelAdmin from myapp.models import Article class ArticleAdmin(ModelAdmin): list_display = ("title", "status", "created_at") list_filter = ("status",) search_fields = ("title",) class MyAdminSite(AdminSite): site_header = "Моя панель управления" site = MyAdminSite() site.register(Article, ArticleAdmin)

Пример . Использование в проекте

Для использования собственного административного сайта в проекте необходимо заменить стандартный сайт в urls.py:

from django.contrib import admin from django.urls import path from myadmin import site urlpatterns = [ path("admin/", site.urls), ]

Пример . Переопределение метода has_permission

Переопределим метод has_permission для ограничения доступа:

from django.contrib.admin import AdminSite class MyAdminSite(AdminSite): site_header = "Моя панель управления" def has_permission(self, request): # разрешаем доступ только суперпользователям return request.user.is_superuser

Смотрите также

  • метод register,
    который регистрирует модель в административном интерфейсе
  • декоратор admin.register,
    который упрощает регистрацию моделей
  • класс ModelAdmin,
    который настраивает отображение модели в административной панели
  • метод unregister,
    который удаляет модель из административного интерфейса
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить