我正在尝试关注Django Tutorial, Part 2,并且最后一部分关于模板。我遇到的问题是我正在更改base_site.html
并且我的网站中没有反映任何更改。我正在使用Python 3.4
根据教程,我在manage.py所在的目录中创建了一个带有“templates”文件夹的文件结构。
然后,我将TEMPLATES'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中的print()行),目录看起来是正确的:
/home/<user>/Documents/DjangoProjects/Tutorial/templates
我已经检查了this thread和其他人,但没有找到任何帮助。我相信我已经按照教程进入了一个发球台,你能不能帮助我理解我是如何错误地解释教程的?或者这是一个文档错误?
答案 0 :(得分:4)
你正在做的事情没有错,问题是模板的default
filter如何运作。
如果|
左侧的值未传递给模板,则此过滤器会在|
右侧给出值。
由于django管理应用程序传入site_title
的值,因此不会触发默认过滤器。
如果您真的想要更改显示的标题,可以通过自定义django管理员set the value of site_title
(当您在教程中进一步移动时,您将了解有关自定义管理员的更多信息,这将使链接更清晰)。
如果您只想查看设置是否正确,可以将模板更改为以下内容:
{% block title %}
Foo: {{ title }} | {{ site_title|default:_('My Admin Title') }}
{% endblock %}
然后刷新管理网站并观看页面标题。