【问题标题】:Jinja nested template not found找不到 Jinja 嵌套模板
【发布时间】:2018-03-04 03:08:41
【问题描述】:

我的烧瓶项目中有以下结构:

app
   -app
     -static
     -templates
       -layouts
         footer.html
         header.html
         main.html
       search.html
     __init__.py
     app.py
     MANIFEST.in
     setup.py

在 app.py 中:

@app.route('/search')
def show_search_form():
    return render_template('search.html')

搜索.html:

{% extends "layouts/main.html" %}

{% block body %}

Test

{% endblock %}

main.html

{% include 'header.html' %}

{% block content %}

{% endblock %}

{% include 'footer.html' %}

header.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>App</title>
</head>
<body>

页脚.html

</body>
</html>

如您所见,我将 main.html 扩展为 search.html 并使用(在本例中)“测试”作为要注入正文块的内容。但它不起作用,我收到以下错误:

jinja2.exceptions.TemplateNotFound: header.html

代码有什么问题?

【问题讨论】:

  • 这些文件在您的目录结构中的什么位置?
  • @MattHealy 抱歉,刚刚将文件添加到结构中

标签: python-3.x flask jinja2


【解决方案1】:

由于您的 footer.html 和 header.html 文件位于布局目录下,您需要在主模板中引用它们:

ma​​in.html

{% include 'layouts/header.html' %}

{% block content %}

{% endblock %}

{% include 'layouts/footer.html' %}

【讨论】:

  • 是的,我已经尝试过了,但也没有用:jinja2.exceptions.TemplateNotFound: layout/header.html
  • 不应该是“布局”而不是“布局”吗?
  • 是的,先生。你是对的。修复拼写后,我没有收到错误,而是空白页而不是文本“测试”
  • 没关系。我现在得到一个空页面的唯一原因是因为我引用的是“body”块(不存在)而不是“content”块
猜你喜欢
  • 1970-01-01
  • 2016-06-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多