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

时间:2016-08-24 20:06:32

标签: 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 %}

我试着将其放入

  

my_site /模板/管理/ 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',
            ],
        },
    },
]

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

我现在非常沮丧,绝对可以使用一些帮助,谢谢

更新: 实际上我发现本地模板确实有效。 enter image description here

就像这里一样,最顶端的白条显示&#34;#base_site.html !! @#&#34;这是我放在my_site / templates / admin / base_site.html作为评论的机会。所以它有点工作,但我仍然不明白为什么我不能改变网站标题。

6 个答案:

答案 0 :(得分:4)

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

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

然后将文件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 %}

Django Documentation - Overriding Admin Site

希望有所帮助。

答案 1 :(得分:3)

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

  

将您的应用放在之前定义此模板的位置   &#39; django.contrib.admin&#39;,INSTALLED_APPS

link

答案 2 :(得分:2)

所以你应该删除包括花括号,然后写下你想要的文本。

Remove: `{{ site_title|default:_('NEW TITLE') }}`  Write: NEW TITLE
Remove: `{{ site_header|default:_('NEW TITLE' }}`  Write: NEW TITLE

还要确保将文件夹(templates / admin)放在项目的根目录中。 root目录是所有app文件夹和manage.py文件的容器。

换句话说,您要创建的“templates”文件夹应与manage.py文件位于同一级别。

您的文件夹结构应如下所示:

mysite/
    templates/
        admin/
            base_site.html
    manage.py
    mysite/
        __init__.py
        settings.py
        urls.py
        wsgi.py
    ...
    ...

答案 3 :(得分:1)

我不确定我是否理解正确。但是您可以通过以下操作轻松更改标题:

在“ urls.py”文件中

from django.contrib import admin

urlpatterns = [
    path('admin/', admin.site.urls),
    .......
]

admin.site.site_header = 'My New Title'
admin.site.site_title = 'My New Title'

然后它将为您完成工作。

答案 4 :(得分:0)

您应该从模板中删除 site_title 。 INSTALLED_APPS中的应用程序顺序无关紧要。

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

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

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

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

答案 5 :(得分:0)

要更改Django Admin网站标题,您可以在Django应用的admin.py中添加以下两行:

from django.contrib import admin

# change Django admin title
admin.site.site_title = 'My Blog Admin'

# change Django admin site header
admin.site.site_header = 'My Blog Admin'