django:如何实际覆盖管理站点模板

Han*_* Li 3 python django django-admin

我知道这个问题已经被问了几次了,但是我基本上遍历了所有关于堆栈溢出的内容,但仍然无法解决这个问题。现在,我只是尝试简单地更改管理站点标题。我有以下几点:

#base_site.html
{% extends "admin/base_site.html" %}

{% block title %}{{ title }} | {{ site_title|default:_('NEW TITLE') }}{% endblock %}

{% block branding %}
<h1 id="site-name"><a href="{% url 'admin:index' %}">{{ site_header|default:_('NEW TITLE') }}</a></h1>
{% endblock %}

{% block nav-global %}{% endblock %}
Run Code Online (Sandbox Code Playgroud)

我试图把它放进去

my_site / templates / admin / base_site.html,

my_site / templates / admin / my_app / base_site.html,以及

my_site / my_app / templates / admin / base_site.html,

但这些都不起作用。

settings.py:
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates')],
        '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',
            ],
            'loaders': [
                'django.template.loaders.filesystem.Loader',
                'django.template.loaders.app_directories.Loader',
            ],
        },
    },
]
Run Code Online (Sandbox Code Playgroud)

我也尝试过直接更改django \ contrib \ admin \ templates \ admin \ base_site.html,但仍然没有任何反应。

我现在真的很沮丧,肯定可以使用一些帮助,谢谢

更新:实际上我发现本地模板确实有效。 在此处输入图片说明

像这里一样,最上面的白色栏显示“ #base_site.html!!@#”,这是我偶然在my_site / templates / admin / base_site.html中添加的注释。因此,这有点奏效,但我仍然不明白为什么我不能更改网站标题。

Tob*_*nst 6

首先打开您的settings.py并添加一个模板文件夹:

TEMPLATES = [
{
    'DIRS': [
        '/path/to/your/django-project/templates', # Absolute Path
        # os.path.join(BASE_DIR, 'templates') # Relative Path
    ],
    ... 
Run Code Online (Sandbox Code Playgroud)

然后将文件base_site.html移至以下目录。在文件系统上保留结构很重要。

/path/to/your/django-project/templates/admin/base_site.html

base_site.html的内容:

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

{% block title %}{{ title }} | {{ site_title|default:_('NEW TITLE') }}{% endblock %}

{% block branding %}
<h1 id="site-name"><a href="{% url 'admin:index' %}">Your new Title</a></h1>
{% endblock %}

{% block nav-global %}{% endblock %}
Run Code Online (Sandbox Code Playgroud)

Django说明文件-覆写管理网站

希望能有所帮助。


Moh*_*agi 5

在settings.INSTALLED_APPS中的“ Django.contrib.admin”上方添加Django应用。订购很重要。

使用my_site / my_app / templates / admin / base_site.html

将您的应用放在INSTALLED_APPS中“ django.contrib.admin”之前您定义此模板的位置

源链接