2015-07-21 44 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