Настройка Django Admin: изменение названия сайта и заголовков
Быстрый ответ
Для изменения заголовков в Django Admin необходимо создать подкласс AdminSite
и установить атрибуты site_header
, site_title
и index_title
. Пример такого кода, который вы можете применить в вашем проекте на Django, представлен ниже:
from django.contrib.admin import AdminSite
class CustomAdminSite(AdminSite):
site_header = 'Название вашей компании в админ-панели'
site_title = 'Заголовок сайта — яркий и запоминающийся'
index_title = 'Приветствие в центре управления сайтом'
admin_site = CustomAdminSite()
# в файле urls.py используйте 'admin_site.urls' вместо 'admin.site.urls'
Настройте атрибуты site_header
, site_title
и index_title
согласно своим предпочтениям, а затем внесите соответствующие изменения в файл urls.py
.
Углубленная настройка
Персонализация шапки через шаблон
Для дополнительной настройки интерфейса Django Admin создайте файл base_site.html
в директории templates/admin/
:
{% extends "admin/base_site.html" %}
{% block branding %}
<h1 id="site-name"><a href="{% url 'admin:index' %}">Ваш уникальный бренд</a></h1>
{% endblock %}
Убедитесь, что папка templates/admin
прописана в DIRS
в разделе TEMPLATES
файла settings.py
:
TEMPLATES = [
{
# ...
'DIRS': [os.path.join(BASE_DIR, 'templates/admin')],
# ...
},
]
Динамические заголовки
Если же вы предпочитаете использовать контекстно-зависимые заголовки, можно создать свою функцию для определения заголовка:
def get_fancy_header():
# Здесь место для вашей логики выборки заголовка
return "Управление порталом 'Динозаврик'."
# Заголовок можно применить в urls.py или admin.py
admin.site.site_header = get_fancy_header()
Полный контроль с помощью подкласса
Для тех, кто стремится к полноценной настройке админ-панели, следует создать собственный подкласс AdminSite
:
from django.contrib.admin import AdminSite
class MyAdminSite(AdminSite):
# Определите свои методы и свойства здесь
my_admin_site = MyAdminSite(name='myadmin')
В файле urls.py
замените admin.site
на my_admin_site
.
Мультиязычная поддержка с использованием ugettext_lazy
Если ваша аудитория является многоязычной, настройте мультиязычную админ-панель с помощью ugettext_lazy
:
from django.utils.translation import ugettext_lazy as _
class MultilingualAdminSite(AdminSite):
site_header = _('Приветствие на Земле')
site_title = _('Планетарный админ')
index_title = _('Контрольный центр панели управления')
multilingual_admin_site = MultilingualAdminSite()
Визуализация
При настройке Django Admin представьте себя оформляющим свой профиль в социальной сети:
👔 Конфигурация профиля в Django Admin 👔
- Имя пользователя: "🏭 AdminX"
- Био: "👷 Набор инструментов разработчика"
- Статус: "📊 Управление данными"
admin.site.site_title = "🏭 AdminX"
admin.site.site_header = "👷 Набор инструментов разработчика"
admin.site.index_title = "📊 Управление данными"
Настраивайте интерфейс админ-панели так, чтобы он отражал ваше видение идеала.
Настройка с дизайнерским подходом: усиление брендирования
Чтобы ваша админ-панель Django выделялась, установите насыщенный брендинг с помощью site_header
:
admin.site.site_header = 'Империя администраторов'
Это можно реализовать в файлах urls.py
и admin.py
.
Решение возможных проблем
Настройка Django Admin обычно проходит успешно, но иногда могут возникать трудности:
- Ошибка поиска шаблона: Убедитесь, что папка
templates/
прописана вTEMPLATES['DIRS']
файлаsettings.py
. - Конфликт настроек: Проверьте код на предмет неумышленного перезаписывания подкласса
AdminSite
. - Проблемы с интернационализацией: Особенно тщательно проверьте правильность импорта и использования
ugettext_lazy
для обеспечения перевода.
Полезные материалы
- Документация Django по админ-панели — официальная документация Django по настройке админки.
- Книга рецептов Django Admin — сборник методов для кастомизации Django Admin.
- Замена шаблонов в Django Admin — описание способов замены шаблонов.
- Видеоурок по Django 1.8 — урок по настройке админки Django.
- DjangoCentral — подробные рекомендации по работе с Django Admin.
- Medium — инструкция по кастомизации интерфейса админки Django.