您的位置:

对于django错误TemplateDoesNotExist(", ".join(template_name_list), chain=chain)的解决

  发布时间:2023-04-03 13:22:56
报错的原因这意味着Django找不到您指定的模板文件。Django会搜索TEMPLATES配置项指定的模板路径来寻找模板文件,如果没有找到则抛出异常。另外,在Django 中, 模板文件需要放在项目中一个叫做'Templates'文件夹里, 并且需要在settings.py中设置这样Django才能找到模板文件。另外, 确保在 settings.py 文件中加载了正确的模板引擎, 例如并且app是否被正确的加入了INSTALLED_APPS列表。还可以尝试重新运行 collectstatic 命令。通过以上检查可以解决绝大部分的问题。

报错的原因

这意味着Django找不到您指定的模板文件。Django会搜索TEMPLATES配置项指定的模板路径来寻找模板文件,如果没有找到则抛出TemplateDoesNotExist异常。

这可能是由于以下原因之一导致的:

1. 模板文件路径指定错误。

2. 模板文件名称指定错误。

3. 模板文件未在指定的目录下。

4. TEMPLATES配置项指定的模板路径不正确。

要解决这个问题, 检查您指定的模板文件路径和名称是否正确,并确保文件存在于指定的目录中。同时检查TEMPLATES配置项中的DIRS(模板目录)是否正确。

另外,在Django 中, 模板文件需要放在项目中一个叫做'Templates'文件夹里, 并且需要在settings.py中设置 'DIRS': [BASE_DIR / 'templates',], 这样Django才能找到模板文件。

模板文件的命名约定是应用程序名/模板文件名,所以在调用的时候需要指定应用程序的名称。

如果您正在使用include进行模板包含,则需要确保被包含的模板也存在并且可以被正确地找到。

如果您仍然无法解决问题, 请确保您的配置文件中TEMPLATES的配置是否正确, 也可以检查是否有其他错误信息。

如何解决

首先,确认模板文件路径和名称是否正确,确保文件存在于项目中的 'templates' 目录中。其次,检查TEMPLATES配置项中DIRS是否配置正确,确保包含了正确的模板目录. 最后,在调用模板的时候,确保调用的是正确的应用程序和模板名。

另外, 确保在 settings.py 文件中加载了正确的模板引擎, 例如'django.template.backends.django.DjangoTemplates', 并且app是否被正确的加入了INSTALLED_APPS列表。

如果仍然不行, 请确保调用模板的代码中没有其他错误。

还可以尝试重新运行 collectstatic 命令。

通过以上检查可以解决绝大部分的问题。

使用例子

举个例子:

假设你的应用名为"myapp", 在myapp目录下面有一个文件叫home.html

那么在 views.py 中调用的模板应该这样写:


from django.shortcuts import render
def my_view(request):
    return render(request, 'myapp/home.html')

并且要确保 myapp 已经被正确加入了INSTALLED_APPS

在 settings.py 中这样配置:


INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'myapp',
]

这样就应该能正确的找到并渲染这个模板了。