如果你使用 "$ django-admin startproject project" 开始一个项目,会创建一个名为 "project-folder-name" 的文件夹,即 project/。在添加一些应用程序并将其添加到 "settings.py" -> INSTALLED_APPS=[..., app1, app2] 中,并在项目目录中创建一个 templates 文件夹后,我的结构如下:
project/
project/
templates/
base.html
app1/
templates/
app1/
page1.html
page2.html
app2/
templates/
app2/
page1.html
page2.html
在模板 app1/template/page1.html 中,我写了以下内容:
{% extends 'base.html' %}
结果出现了 "TemplateDoesNotExist at /" 错误信息。
然后我添加了另一个名为 "core" 的应用程序,并将 base.html 添加到了模板文件夹中(+ 在 settings.py 中编辑 INSTALLED_APPS),现在我的结构如下:
project/
project/
templates/ (unused)
base.html (not seen)
core/
templates/
base.html
app1/
templates/
app1/
page1.html
page2.html
[...]
现在错误信息已经消失,找到了base.html和templates/app1/page1.html:
{% extends 'base.html' %}
您可以像这样更改文件夹结构:
core/
templates/
core/
base.html
那么你需要更改模板 app1/page1.html 为:
{% extends 'core/base.html' %}
另外,您还可以将“your-project-name”添加到此说明中的“project”,并将其放入您的设置文件中,如下所示:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'project',
'core',
'App1',
'App2',
]
现在Django也会找到project/templates/base.html了。不过我不确定这种解决方案是否被推荐使用。
project/
project/
templates/
base.html (now it is found)
顺便说一句,谢谢(我的投票还没有算),如果这个回答在某种程度上是清晰易懂的,请评论我。