Django 'DIRS':settings.py TEMPLATES 中的 [] 导致

我在 python 3.6 中使用 django 2.1.2 版。

我通过 CMD 创建了两个 django 项目(test01 和 test02)。这两个项目都在同一个文件夹下。Test01 正常执行,而 test02 引发 TemplateDoesNotExist 错误。

http://img2.mukewang.com/6108f6260001173d11391300.jpg

我找到了后者的解决方案,即在 settings.py 中硬编码模板的地址:

'目录':[r'C:\django\test02\accounts\templates']

但是,即使将此列表保留为空白 [],另一个项目也可以正常运行。

两个项目的结构是一样的:

http://img.mukewang.com/6108f63300015b6a09391171.jpg

任何人都可以提出一个建议来解决 test02 中的问题,而无需对 test02 中的模板地址进行硬编码?


qq_遁去的一_1
浏览 205回答 2
2回答

阿波罗的战车

您可能会注意到一个名为 的内置 Django 变量BASE_DIR,它代表您的根项目,因此您无需对绝对路径进行硬编码。在设置中添加这个TEMPLATES = [    {        'BACKEND': 'django.template.backends.django.DjangoTemplates',        'DIRS': [os.path.join(BASE_DIR, 'templates')],        'APP_DIRS': True,        'OPTIONS': {            'context_processors': [                # codes...            ],        },    },]注册你所有的应用程序,Django 会在templates你提到的文件夹中查找任何文件os.path.join(BASE_DIR, 'templates')

慕标5832272

让我们在模板中创建一个名为“test01App”的文件夹并在其上创建 base.html。然后你可以调用'test01App/base.html'作为响应。BACKEND 是 django 的默认值,您必须创建文件夹“模板”。您可以自定义在 DIRS 中其他位置存储模板的位置。TEMPLATES = [{    'BACKEND': 'django.template.backends.django.DjangoTemplates',    'DIRS': [os.path.join(BASE_DIR, './cuong')],    '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',        ],    },},]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python