2016-08-24 77 views
1

我知道這是問和答覆了幾次,但我基本上遍歷堆棧溢出的所有帖子,仍然無法讓這個工作。現在我只是想改變管理網站的標題。我有以下幾點: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

回答

3

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

希望有所幫助。

0

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

把你的應用程序,你之前 'django.contrib.admin' 定義這個模板,在INSTALLED_APPS

link

+0

謝謝,但我很確定我已經做了所有這些,仍然在徒勞 –

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

所以你應該刪除包括花括號,並且只寫你想要的文本。

 
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

顯示層次結構的超級有用,謝謝 –