我想知道如何创建一个jinja2模板,允许我将我的标题放入一个变量,我可以扩展基本文件,然后调用我的子文件中的标题。
目前我父母的代码是:
{% block head %}
<div class="wrapper col2">
<div id="topbar">
<div id="topnav">
<ul>
<ul>
<li><a href="/">Home</a></li>
<li><a href="sign-up">Sign in/up</a></li>
<li><a href="#">Admin console</a>
<ul>
<li><a href="/WelcomeAdmin/">Console</a></li>
<li><a href="staffman">Staff Management</a></li>
<li><a href="AlertConsole">ALERTS</a></li>
<li><a href="shootersign">Sign up Shooters</a></li>
</ul>
</li>
<li ><a href="contact-us">Contact Us</a></li>
<li class="last"><a href="/Logout">logout</a></li>
</ul>
</div>
<br class="clear" />
</div>
<hr>
{% with messages = get_flashed_messages() %}
{% if messages %}
<ul>
{% for message in messages %}
<li>{{ message }} </li>
{% endfor %}
</ul>
{% endif %}
{% endwith %}
</div>
{% endblock %}
我的孩子模板是:
{% extends "Header.html" %}
{% block head %}
{% endblock %}
<h1>CREATE SHOOT</h1>
<form action="" method="post" name="form">
{{ form.hidden_tag() }}
<p>
<h2>Name of shoot:</h2>
{{ form.nameofshoot(size=40) }}<br>
<h2>Number of days in shoot:</h2>
{{ form.day}}
<p><input type="submit" value="Create Shoot"></p>
</form>
我做错了什么还是我可以采取另一种方法?
答案 0 :(得分:3)
您需要做的是从您的子模板中删除行{% block head %}{% endblock %}
因为在您的子模板中调用{% extends "Header.html" %}
,所以Header.html中声明的所有内容(无论它在哪个块中)都将自动包含在内。这是延伸的工作。
通过在您的子模板中添加{% block head %}{% endblock %}
,您实际所说的是&#34;从Header.html中获取所有内容,但覆盖了&#39; head&#39;中的所有内容。阻止我在我的孩子模板中指定的内容&#34;。然后,因为您的子模板中定义的块中没有任何内容,所以您无需替换Header.html文件中定义的内容。
您希望使用{% block blockname %}
表示法来指定要在子模板中更改的内容,而不是您希望保持不变的内容。
This page on inheritence是Jinja文档的相关部分,并提供了一个很好的示例。