0

我正在尝试添加一个基本模板以在我的 Django 项目中的不同应用程序中使用。我在“myapp/templates/base.html”创建了一个 base.html 文件

这是我的settings.py中的相关信息:

BASE_DIR = Path(__file__).resolve().parent.parent
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), '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 at /home/
base.html
Request Method: GET
Request URL:    http://127.0.0.1:8000/home/
Django Version: 3.1.1
Exception Type: TemplateDoesNotExist
Exception Value:    
base.html
Exception Location: /Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/django/template/backends/django.py, line 84, in reraise
Python Executable:  /Library/Frameworks/Python.framework/Versions/3.8/bin/python3
Python Version: 3.8.5
Python Path:    
['/Users/jonmi/PycharmProjects/projects/grocery',
 '/Library/Frameworks/Python.framework/Versions/3.8/lib/python38.zip',
 '/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8',
 '/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/lib-dynload',
 '/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages']
Server time:    Sun, 13 Dec 2020 01:43:02 +0000

据我了解,由于 APP_DIRS 设置为 True,模板加载器应该查看我的每个 installed_apps 模板目录,并且它还应该查看 DIRS 列表中的任何目录。但是,模板加载器只查看应用程序目录(例如 myapp/home/templates/home/base.html),而不是我添加到 DIRS 列表中的任何内容。

我尝试更改 DIRS 列表中的内容,包括自己尝试将 base.html 的路径作为字符串输入,但它不会检查我添加到列表中的任何内容。

我看到过类似的问题,但它们都是针对旧版本的 Django 的,而且他们提供的解决方案对我不起作用。有很多人遇到过 TemplateDoesNotExist 错误,但这是我发现的与我最相似的问题:Django 1.8 ignores DIRS, cannot find templates

但是,那里发布的解决方案对我没有帮助,问题是关于 Django 的旧版本。

如何让模板加载器查看 DIRS 列表中的内容?

编辑:

在尝试向我的问题添加更多信息时,我发现出了什么问题。我已将另一个 stackoverflow 问题中的 TEMPLATES 设置复制并粘贴到我的 settings.py 中,但我没有覆盖旧的 TEMPLATES 设置,因此它们被切换回我的初始设置,因为我的旧设置在我的代码中更靠后。

如果您遇到此问题,我的问题中的 TEMPLATES 设置确实可以正常工作。

感谢阅读和评论的人。

4

0 回答 0