Django AdminSite переопределяет шаблон администратора

Я попытался пройти учебник по Django, и там говорится, что вы можете переопределить шаблоны Django с предоставлением примера, как изменить заголовок страницы администратора ( здесь). Когда я попробовал, ничего не изменилось, так что я пошел в Google и исследовал.

В настоящее время структура моего проекта выглядит следующим образом (django_trial - это название моего проекта):

- django_trial/
    - django_trial/
    - polls/
        - ...
    - templates/
        - admin/
            - base_site.html (copy of template from Django with modified title)
        - base_site.html (copy of admin/base_site.html from above, just in case)
    - venv

Я попытался посмотреть, какой шаблон он загружает, поэтому я поместил код ниже в свой polls/admin.py

from django.template.loader import get_template

a = get_template("admin/base_site.html")
print(repr(a.origin))

и он напечатал <Origin name='/home/my_username/Projects/django_trial/templates/admin/base_site.html'>, так что моя переопределение шаблона, похоже, работает несколько корректно.

Затем я попробовал изменить фактические файлы библиотеки, и изменение оригинального .../venv/lib/python3.10/site-packages/django/contrib/admin/templates/admin/base_site.html также ничего не дало. В конце концов, мне удалось изменить заголовок страницы администратора, когда я изменил .../venv/lib/python3.10/site-packages/django/contrib/admin/sites.py. Есть класс AdminSite и в нем есть строка

site_header = gettext_lazy("Django administration")

Похоже, что она имеет наивысший приоритет, поэтому ее модификация действительно изменила заголовок страницы администратора. Что я могу сделать не так, чтобы эта строка всегда имела приоритет?

Вы можете сделать несколько вещей:

Добавьте путь к шаблону в settings.py

TEMPLATES = [
{
    'BACKEND': 'django.template.backends.django.DjangoTemplates',
    'DIRS': [os.path.join(BASE_DIR, 'templates')], # <- add this line
    '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',
        ],
    },
},]

Для обновления заголовка администратора вы можете использовать модель администратора, предоставляемую django

просто добавьте:

from django.contrib import admin

admin.sites.AdminSite.site_header = "YOUR ADMIN HEADER"
Вернуться на верх