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>