从项目根 Django 扩展模板
Posted
技术标签:
【中文标题】从项目根 Django 扩展模板【英文标题】:Extending Templates from project root Django 【发布时间】:2018-03-20 08:16:39 【问题描述】:在我的根文件夹中,我有一个模板文件夹,里面有一个 base.html 文件。我有一个带有一些 html 的应用程序,我希望它扩展 base.html。
这是base.html中的代码:
<header><h3>Header here</h3></header>
% block content %
% endblock %
<footer><h3>Footer here</h3></footer>
app里面的代码是:
% extends base.html %
% block content %
<h1> question.question_text </h1>
<ul>
% for choice in question.choice_set.all %
<li> choice.choice_text -- choice.votes vote choice.votes|pluralize </li>
% endfor %
</ul>
<a href="% url 'polls:detail' question.id %">Vote again?</a>
% endblock %
由于某种原因,我在“扩展”标签错误中收到无效的模板名称,我不知道为什么。
我已通过在线搜索将我的 settings.py 文件更新为此文件,但仍然无法正常工作:
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',
],
,
,
]
【问题讨论】:
【参考方案1】:文件名应该用引号引起来
% extends "base.html" %
% block content %
% endblock %
在你的 settings.py 中应该是
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',
],
,
,
]
【讨论】:
我已更新模板以包含引号,但现在我收到 TemplateDoesNotExist 错误。如上所示,我已将目录包含在 DIRS 中,并且检查了 base.html 是否位于预期的目录中。有什么想法吗? @dobolicious 查看最新答案 等等别着急,发现问题了,我的模板目录放错地方了。感谢您的帮助和您的时间。以上是关于从项目根 Django 扩展模板的主要内容,如果未能解决你的问题,请参考以下文章
Django:如何重新分发包含可扩展 HTML 模板的项目/应用程序?