这是一个简单的模板结构,由三个文件组成:
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>
main.html
是我给jinja2格式化的文件。
{% extends "wrapper.html" %}
{% set title = title | default("Untitled") %}
{% block header %}
<h1>Welcome to {{ title }}</h1>
{% endblock %}
{% block body %}
{% include "included.html" %}
{% endblock %}
和included.html
有一些额外的东西,我不想因为某种原因而放入main.html
<p>In this page ({{ title }}), we will discuss all kinds of things.</p>
<p>Blah blah blah...</p>
我的问题是,当错过一个标题时,一切都充满了&#34;无标题&#34;除了一个地方:included.html
文件。
我找到了两种方法来解决这个问题。
{% set title = title %}
的{{1}}内添加{% block body %}
(什么?为什么会这样?)main.html
移至{% set title = title | default("Untitled") %}
我不喜欢这两种选择。第一个是出于显而易见的原因,第二个是因为我可能希望以多种方式扩展wrapper.html
和&#34;无标题&#34;可能并不总是无标题页面的最佳选择。
所以我的问题是:我有什么方法可以让wrapper.html
识别included.html
中未在块范围内直接定义的变量?
我还想知道我是否错误地使用了Jinja2。