您的位置:

解决TemplateDoesNotExist(name, tried=tried)在django出现报错

  发布时间:2023-02-27 16:54:18
报错的原因这个错误通常是由于 Django 找不到指定的模板文件而引起的。Django 默认搜索 `TEMPLATES` 配置设置中 `DIRS` 选项指定的路径。- 你的 Django 项目配置不正确。如何解决解决这个错误的方法是确保你指定的模板文件名称正确,并且该文件存在于 Django 所搜索的路径中。如果你的 Django 项目中有多个应用,则可能需要在每个应用的模板目录中创建名为 `templates` 的子目录,并将模板文件放在该目录中。在渲染 `home.html` 模板时,Django 会将其中的内容插入到 `base.html` 模板中 `content` 块的位置,并将结果呈现给用户。

报错的原因

TemplateDoesNotExist(name, tried=tried) 这个错误通常是由于 Django 找不到指定的模板文件而引起的。

可能的原因有:

- 你指定的模板文件名称不正确。确保模板文件名称没有拼写错误,并且你指定的路径与模板文件实际存储的路径匹配。

- 你指定的模板文件不在 Django 所搜索的路径中。Django 默认搜索 `TEMPLATES` 配置设置中 `DIRS` 选项指定的路径。确保模板文件存储在这些路径之一中。

- 你的 Django 项目配置不正确。确保你的项目正确地配置了 `TEMPLATES` 选项,并且在该选项中的 `DIRS` 列表中指定了所有可能包含模板文件的路径。

如何解决

解决 TemplateDoesNotExist(name, tried=tried) 这个错误的方法是确保你指定的模板文件名称正确,并且该文件存在于 Django 所搜索的路径中。

如果你的 Django 项目中有多个应用,则可能需要在每个应用的模板目录中创建名为 `templates` 的子目录,并将模板文件放在该目录中。

例如,假设你的 Django 项目中有一个名为 `myapp` 的应用,该应用的模板目录结构如下所示:


myapp/
    templates/
        myapp/
            template.html

在这种情况下,要使用该模板,你应该使用以下语法:


{% extends "myapp/template.html" %}

这样,Django 就会在 `myapp` 应用的模板目录中搜索 `template.html` 文件。

使用例子

是的,我可以为你提供一个使用模板的例子。

假设你有一个名为 `base.html` 的模板,该模板包含基本 HTML 骨架和一些用于定义页面头和尾的块(例如,导航菜单、页脚等)。你还有一个名为 `home.html` 的模板,该模板继承自 `base.html`,并添加了一些用于呈现主页内容的块。

你可以使用以下语法在 `home.html` 中继承 `base.html`:


{% extends "base.html" %}

{% block content %}
    

Welcome to my site

Here's some content for the home page

{% endblock %}

在这个例子中,`base.html` 模板可能包含以下内容:




    My Site


    
{% block content %} {% endblock %}

Copyright 2021 My Site

在这个例子中,`base.html` 模板包含了基本的 HTML 骨架,并使用 `{% block %}` 语句定义了一个名为 `content` 的块。在这个块中,你可以放置用于呈现页面内容的代码。

在渲染 `home.html` 模板时,Django 会将其中的内容插入到 `base.html` 模板中 `content` 块的位置,并将结果呈现给用户。