Программы
Панель администрирования Django - настройка вида (шаблона)

Панель администрирования Django - настройка вида (шаблона)

Простой способ подключить админку к сайту на Django, как сконфигурировать адмиин-панель, как изменить оформление администрационной панели Django фреймворка.

Админ-панель Django выглядит достаточно неплохо: не раздражает цвет, адаптивный дизайн, всё расположено довольно логично... Тем не менее, многие не хотят видеть надпись "Django", да и а целом разукрасить админку в "свои цвета".

Настраиваем отображение заголовка, вкладки

Самое первое, что бросается в глаза - страница логина, на которой открытым текстом говорится о фреймфорке, первая страница после логина - также приветствие от Django, да и название вкладки намекает на нашего веб-друга. Чтобы поменять всё это "безобразие", нужно в admin.py сделать всего 3 настройки:

from django.contrib import admin

admin.site.site_header = "Лучшая админка"
admin.site.site_title = "Панель администрирования"
admin.site.index_title = "Добро пожаловать в админку"

Ну вот и готова наша BolgenCMS - можно уже продавать. Хотя и раньше можно было - лицензия позволяет. Но если всё же вам важно изменить эти надписи - теперь можете изменить.

Убираем "ненужные" разделы админки

При первом входе в админ-панель Django можно увидеть два раздела для редактирования пользователей и групп. Если они вам по какой-то причине мешают - их можно также просто убрать. Для этого "разрегистрируем" эти админки:

from django.contrib import admin
from django.contrib.auth.models import User, Group

admin.site.unregister(User)
admin.site.unregister(Group)

В предыдущей заметке о настройке Django админки мы напротив - регистрировали свою модель в админку. Здесь же мы удаляем "ненужное".

Есть время создавать админки, а есть время их удалять...

Добавляем логотип к нашей админке

Понятно, что у лучшей админки должен быть как минимум свой логотип. Чтобы добавить логотип, нам нужно для начала включить работу со статическими файлами. Поэтому создадим в корне проекта папку static и зарегистрируем её в settings.py:

STATIC_URL = '/static/'  # Вот под этой строчкой
STATICFILES_DIRS = [f'{BASE_DIR}/static/']

Добавим в нашу папку для статики файл логотипа pony.png.

Теперь нам нужно переопределить шаблон для заголовка страницы - templates/admin/base_site.html. Для переопределения шаблонов я обычно завожу отдельную папку либо в главном приложении, либо в корне проекта. Чтобы это сделать, немного отредактируем переменную TEMPLATES в sessings.py:

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [f'{BASE_DIR}/templates/'],  # Изменилась эта строчка
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

Сам файл шаблона заголовка админ-панели создаём в файле templates/admin/base_site.html:

{% extends "admin/base.html" %}

{% load static %}

{% block title %}{{ title }} | {{ site_title|default:_('Django site admin') }}{% endblock %}

{% block branding %}
<h1 id="site-name">
    <a href="{% url 'admin:index' %}">
        <img src="{% static 'pony.png' %}" height="40px" />
        {{ site_header }}
    </a>
</h1>
{% endblock %}

{% block nav-global %}{% endblock %}

Не знаю как у вас, а у меня теперь рядом с заголовком красуется поняшка.

Аналогичным методом можно переопределить и другие шаблоны. Оригиналы можно найти в пакете django, лежат они в директории django/contrib/admin/templates/admin. Либо же, если просто хотите поменять что-то в цветовой схеме - можете переопределить файл /static/admin/css/base.css.

Также может быть вам интересно:

Панель администрирования Django - подключение, настройка, поиск, фильтрация

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

Читать »

Пользователи и авторизация (логин) в Django, кастомизация пользователя

В Django есть множество встроенных возможностей, которые позволяют не реализовывать многие классы для стандартных операций. Среди них - авторизация. Django изначально предоставляет пользовательскую систему. Но её можно использовать лучше, чем по умолчанию.

Читать »
Фото Python: Встроенные типы данных (list, set, dict, etc)

Python: Встроенные типы данных (list, set, dict, etc)

В Python есть множество встроенных типов данных. Их использование значительно упрощает жизнь и ускоряет разработку программных продуктов.

Фото Python: типы данных, переменные, логическое ветвление и циклы

Python: типы данных, переменные, логическое ветвление и циклы

Первая часть заметок о Python. О базовых типах, переменных, ветвлении и циклах.

Фото Как сделать свою middleware в Django (с примерами)

Как сделать свою middleware в Django (с примерами)

Middleware или "промежуточное программное обеспечение" - элегантный способ установить общие правила обработки запросов и ответов приложения. Давайте напишем парочку middleware, чтобы понять, как они работают.

Фото Как настроить отправку почты из Django

Как настроить отправку почты из Django

Письма об ошибках, отчёты на почту, восстановление паролей - всё это полезно при работе с сайтом. Django предоставляет удобный способ это сделать с минимумом настроек!

Фото Добавляем постраничную пагинацию на Django сайт

Добавляем постраничную пагинацию на Django сайт

На сайтах часто встречаются многостраничные объекты: список товаров, список заметок и т.д. Поэтому важно уметь добавить навигацию по страницам на Django-проекте.

Фото Новый оператор match-case в Python

Новый оператор match-case в Python

В новой версии Python (3.10) появится новый оператор. Новый оператор сопоставления по шаблону (match-case).

Фото Нет слов, одни... однострочники

Нет слов, одни... однострочники

На днях вышел пост со списком полезных однострочников для JavaScript программистов. Памятуя Perl-овую молодость, заглянул туда.

Фото Добавляем переменные в контекст Django шаблонов (свой контекст-процессор)

Добавляем переменные в контекст Django шаблонов (свой контекст-процессор)

В Django вы можете передавать данные в шаблоны посредством контекстов. Контекст передаётся из контроллера (view в терминах Django), однако, если одни и те же данные нужны в разных местах, лучше сделать свой контекст-процессор.