Руководство по настройке внешнего вида админ-панели в Django

Руководство по настройке внешнего вида админ-панели в Django

Админ-панель в Django — это мощный инструмент, предоставляющий разработчикам удобный интерфейс для управления моделями данных и их содержимым. По умолчанию она имеет простой и функциональный дизайн, но при желании её можно настроить в соответствии со своими предпочтениями и требованиями проекта.

Обзор возможностей кастомизации

Django предлагает множество способов кастомизации админ-панели, включая:

  • Изменение заголовков и меток
  • Настройка списка полей модели
  • Добавление фильтров и поиска
  • Создание пользовательских действий
  • Определение порядка сортировки
  • Изменение шаблонов и стилей

В этом руководстве мы рассмотрим различные методы настройки внешнего вида админ-панели Django.

Изменение заголовков и меток

Одна из наиболее распространённых задач при кастомизации — изменение заголовков и меток, отображаемых в админ-панели. Для этого необходимо переопределить метакласс модели и указать нужные значения.

Например, для изменения заголовка модели Product и метки поля name можно использовать следующий код:

from django.db import models

class Product(models.Model):
    name = models.CharField(max_length=100)
    description = models.TextField()

    class Meta:
        verbose_name = "Товар"
        verbose_name_plural = "Товары"

    def __str__(self):
        return self.name

    class Meta:
        verbose_name = "Товар"
        verbose_name_plural = "Товары"
        ordering = ["name"]

Настройка списка полей модели

В админ-панели Django можно настроить, какие поля модели будут отображаться в списке и в каком порядке. Для этого используется атрибут list_display в классе ModelAdmin.

from django.contrib import admin

class ProductAdmin(admin.ModelAdmin):
    list_display = ("name", "description", "price")

admin.site.register(Product, ProductAdmin)

В приведённом примере в списке моделей Product будут отображаться поля name, description и price.

Добавление фильтров и поиска

Фильтры и поиск значительно облегчают навигацию по большим наборам данных в админ-панели. Для добавления фильтров используется атрибут list_filter, а для поиска — search_fields.

from django.contrib import admin

class ProductAdmin(admin.ModelAdmin):
    list_display = ("name", "description", "price")
    list_filter = ("category",)
    search_fields = ("name", "description")

admin.site.register(Product, ProductAdmin)

В этом примере для модели Product добавлен фильтр по полю category и возможность поиска по полям name и description.

Создание пользовательских действий

Django позволяет создавать пользовательские действия для выполнения определённых операций над выбранными объектами модели. Для этого необходимо определить функцию действия и добавить её в атрибут actions класса ModelAdmin.

from django.contrib import admin
from django.utils.translation import ngettext

def duplicate_products(modeladmin, request, queryset):
    for product in queryset:
        product.id = None
        product.save()
    count = queryset.count()
    ngettext(
        "Продублирован %d товар.",
        "Продублировано %d товаров.",
        count,
    ) % count

duplicate_products.short_description = "Дублировать выбранные товары"

class ProductAdmin(admin.ModelAdmin):
    list_display = ("name", "description", "price")
    actions = [duplicate_products]

admin.site.register(Product, ProductAdmin)

В этом примере определено действие duplicate_products, которое создаёт дубликаты выбранных объектов модели Product. Действие добавлено в атрибут actions класса ProductAdmin.

Определение порядка сортировки

Порядок сортировки объектов модели в админ-панели можно задать с помощью атрибута ordering в метаклассе модели или в классе ModelAdmin.

from django.contrib import admin

class ProductAdmin(admin.ModelAdmin):
    list_display = ("name", "description", "price")
    ordering = ["-price", "name"]

admin.site.register(Product, ProductAdmin)

В этом примере объекты модели Product будут сортироваться по убыванию цены (-price), а при одинаковых ценах — по названию в алфавитном порядке (name).

Читайте также  Джон Мюллер раскрывает секреты влияния упоминания бренда на ранжирование

Изменение шаблонов и стилей

Для более глубокой кастомизации внешнего вида админ-панели можно переопределить шаблоны и стили, используемые по умолчанию. Это позволяет изменить расположение элементов, цвета, шрифты и многое другое.

Для переопределения шаблона необходимо создать директорию templates в корневой директории проекта и скопировать в неё нужный шаблон из директории django/contrib/admin/templates. После этого можно внести необходимые изменения в скопированный шаблон.

Для изменения стилей следует создать файл admin.css в директории static проекта и добавить в него нужные стили. Затем необходимо подключить этот файл в шаблоне админ-панели.

Советы по созданию сайтов