int*_*_32 5 django django-templates
我的项目中有多个应用程序:
app2/templates/overview.index.html 有以下代码:
{% extends 'base.html' %}
Run Code Online (Sandbox Code Playgroud)
所以应该延长app2/templates/base.html
但实际上它延伸了app1/templates/base.html!为什么以及如何解决它?
应用程序模板加载器返回第一个匹配的模板,它不知道您正在特定应用程序“内部”渲染模板。
Django文档建议您将应用程序的模板放在 中myapp/templates/myapp,而不是myapp/templates/. 这可以防止模板发生冲突。
现在我们也许可以直接将模板放入
polls/templates(而不是创建另一个 polls 子目录),但这实际上是一个坏主意。Django 将选择它找到的第一个名称匹配的模板,如果您在不同的应用程序中具有相同名称的模板,Django 将无法区分它们。我们需要能够将 Django 指向正确的位置,而确保这一点的最简单方法是通过命名它们。也就是说,将这些模板放入以应用程序本身命名的另一个目录中。
所以在你的情况下,你可以将结构更改为
然后,您必须更新视图中的模板名称,例如
return render(request, 'app2/some_template.html', {})
Run Code Online (Sandbox Code Playgroud)
并在你的模板中
{% extends 'app2/base.html' %}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1457 次 |
| 最近记录: |