Variables Jinja2范围问题与区块和包括

Variables Jinja2范围问题与区块和包括,variables,scope,jinja2,Variables,Scope,Jinja2,下面是一个简单的模板结构,由三个文件组成: wrapper.html,它定义了页面的基本结构。它有一些可以扩展的块 <!DOCTYPE html> <html> <head lang="en"> <meta charset="utf-8"> <script type="text/javascript" src="/something.js"></script> <

下面是一个简单的模板结构,由三个文件组成:

wrapper.html
,它定义了页面的基本结构。它有一些可以扩展的块

<!DOCTYPE html>
<html>
    <head lang="en">
        <meta charset="utf-8">
        <script type="text/javascript" src="/something.js"></script>
        <link rel="stylesheet" type="text/css" href="/style.css">

        <title>{{ title }}</title>
    </head>
    <body>
        {% block header %}
        {% endblock %}

        {% block body %}
        {% endblock %}
    </body>
</html>
而且
included.html
还有一些额外的东西,我不想出于任何原因放入
main.html

<p>In this page ({{ title }}), we will discuss all kinds of things.</p>
<p>Blah blah blah...</p>
在这个页面({{title}),我们将讨论各种各样的事情

废话废话

我的问题是,当缺少一个标题时,所有内容都会被“Untitled”填充,除了一个地方:included.html
文件。
我找到了两种方法来解决这个问题

  • main.html的
    {%set title=title%}
    中添加
    {%block body%}
    (什么?为什么这样做?)
  • {%set title=title | default(“Untitled”)%}
    移动到
    wrapper.html
  • 这两种选择我都不喜欢。第一个原因很明显,第二个原因是如果我想以多种方式扩展
    wrapper.html
    ,那么“无标题”可能并不总是无标题页面的最佳选择

    所以我的问题是:有没有办法让
    included.html
    识别
    main.html
    中未直接定义在块范围内的变量?
    我也想知道我是否错误地使用了Jinja2

    <p>In this page ({{ title }}), we will discuss all kinds of things.</p>
    <p>Blah blah blah...</p>