django:我怎么实际覆盖管理网站模板

问题描述:

我知道这是问和答复了几次,但我基本上遍历堆栈溢出的所有帖子,仍然无法让这个工作。现在我只是想改变管理网站的标题。我有以下几点:django:我怎么实际覆盖管理网站模板

#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 /模板/管理/程序my_app/base_site.html和

my_site/my_app应用/模板/管理/ 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 \模板\ ADMIN \ base_site.html但仍然没有任何反应。

我真的很沮丧,现在绝对可以使用一些帮助,感谢

更新: 其实我发现当地的模板确实有效果。 enter image description here

像这里一样,最顶端的白色条显示“#[email protected]@”,​​这是我偶然在my_site/templates/admin/base_site.html中放置的注释。所以它有点工作,但我仍然不明白为什么我不能改变网站标题。

+0

如果它不是,当你编辑源模板认真做事奇怪的是怎么回事工作,那么。你确定你从你认为的地方运行服务器吗? –

+0

@DanielRoseman是的,我很确定。所以我现在真的很挠我的头 –

+0

https://docs.djangoproject.com/en/1.10/ref/contrib/admin/#customizing-adminsite – allcaps

首先打开你的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

希望有所帮助。

使用my_site/my_app应用/模板/管理/ base_site.html

把你的应用程序,你之前 'django.contrib.admin' 定义这个模板,在INSTALLED_APPS

link

+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 %} 

所以你应该删除包括花括号,并且只写你想要的文本。

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

另外,请确保您将文件夹(templates/admin)放入项目的根目录中。根目录是所有应用程序文件夹以及manage.py文件的容器。

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

你的文件夹结构应该是这样的:

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

显示层次结构的超级有用,谢谢 –