2015-07-21 64 views
3

我試圖跟隨Django Tutorial, Part 2,並陷入關於模板的最後一部分。我遇到的問題是我正在更改base_site.html,並且沒有任何更改正在我的網站中反映出來。我使用Python 3.4Django的教程第2部分模板 - base_site.html變化不會反映

每本教程中,我創造了在同一目錄manage.py一個「模板」文件夾,該文件結構。

  • 教程
    • 教程
    • 投票
    • 模板
      • 管理
        • base_site.html
    • manage.py

然後,我修改的模板 'DIRS' 到[os.path.join(BASE_DIR,'templates')]

settings.py:

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) 
... 
INSTALLED_APPS = (
'django.contrib.admin', 
'django.contrib.auth', 
'django.contrib.contenttypes', 
'django.contrib.sessions', 
'django.contrib.messages', 
'django.contrib.staticfiles', 
'polls' 
) 

MIDDLEWARE_CLASSES = (
'django.contrib.sessions.middleware.SessionMiddleware', 
'django.middleware.common.CommonMiddleware', 
'django.middleware.csrf.CsrfViewMiddleware', 
'django.contrib.auth.middleware.AuthenticationMiddleware', 
'django.contrib.auth.middleware.SessionAuthenticationMiddleware', 
'django.contrib.messages.middleware.MessageMiddleware', 
'django.middleware.clickjacking.XFrameOptionsMiddleware', 
'django.middleware.security.SecurityMiddleware', 
) 

ROOT_URLCONF = 'Tutorial.urls' 
print(os.path.join(BASE_DIR, 'templates')) 
TEMPLATES = [ 
{ 
'BACKEND': 'django.template.backends.django.DjangoTemplates', 
'DIRS': [os.path.join(BASE_DIR, 'templates')], 
'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', 
], 
}, 
}, 
] 

然後,我修改base_site.html到閱讀:

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

{% block title %}{{ title }} | {{ site_title|default:_('My Admin Title') 
{% endblock %} 

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

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

最後,我瀏覽到我的網站:

http://localhost:8000/admin/ 

不過,我仍然標題爲「網站管理」映入眼簾。

我檢查看着(settings.py中打印()線)的目錄,該目錄看起來是正確的:

/home/<user>/Documents/DjangoProjects/Tutorial/templates 

我已經簽出this thread等人,但都沒有發現有用的東西。我相信我已經按照教程來開球,你們中的任何人都可以幫我理解我是如何錯誤地解釋教程的?或者這是一個文檔錯誤?

回答

4

沒有什麼錯,你在做什麼,問題是如何模板的default filter作品。

如果|左側的值未傳遞給模板,此過濾器將給出|右側的值。

由於Django管理應用程序在一個值傳遞爲site_title,則不會觸發默認過濾器。

如果您確實想要更改顯示的標題,您可以通過自定義django管理員(當您在本教程中進一步移動,您將瞭解更多關於自定義管理員的信息,這將使鏈接更清晰)set the value of site_title

如果你只是想看看你的設置是正確的,你可以在模板更改爲以下:

{% block title %} 
Foo: {{ title }} | {{ site_title|default:_('My Admin Title') }} 
{% endblock %} 

然後刷新您的管理網站,觀看頁面的標題。

+0

我遇到了同樣的問題,在這裏發現了很多關於它的問題/答案,但這是唯一一個做了什麼的。我認爲這個問題一定是文件設置(即使我已經多次檢查了所有內容),但實際上這是模板工作的方式。看起來教程應該提到這一點,但至少我知道我的設置正在工作。謝謝! – Ellis