如何创建可以添加到文件烧瓶中的 header
How to create a header that can be added into files flask
我想知道如何创建一个 jinja2 模板,允许我将我的 header 放入一个变量中,我可以在其中扩展基本文件,然后调用我的 [=] 中的 header 25=] 文件。
目前我的 parent 代码是:
{% 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 %}
我的 child 模板是:
{% 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>
我做错了什么或者我可以采取其他方法吗?
您需要做的是从子模板中删除行 {% block head %}{% endblock %}
因为在您的子模板中您调用了 {% extends "Header.html" %}
,所以在 Header.html 中声明的所有内容(无论它在什么块中)都将自动包含在内。这就是 extends 的工作。
通过在您的子模板中添加 {% block head %}{% endblock %}
,您实际上说的是 "take everything from Header.html, but override everything in the 'head' block with what I specify in my child template"。然后,因为在您的子模板中定义的块中没有任何内容,您正在用任何内容替换 Header.html 文件中定义的内容。
您想使用 {% block blockname %}
符号来指定要在子模板中更改的内容,而不是要保持不变的内容。
This page on inheritence 是 Jinja 文档的相关部分,并提供了一个很好的示例。
我想知道如何创建一个 jinja2 模板,允许我将我的 header 放入一个变量中,我可以在其中扩展基本文件,然后调用我的 [=] 中的 header 25=] 文件。
目前我的 parent 代码是:
{% 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 %}
我的 child 模板是:
{% 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>
我做错了什么或者我可以采取其他方法吗?
您需要做的是从子模板中删除行 {% block head %}{% endblock %}
因为在您的子模板中您调用了 {% extends "Header.html" %}
,所以在 Header.html 中声明的所有内容(无论它在什么块中)都将自动包含在内。这就是 extends 的工作。
通过在您的子模板中添加 {% block head %}{% endblock %}
,您实际上说的是 "take everything from Header.html, but override everything in the 'head' block with what I specify in my child template"。然后,因为在您的子模板中定义的块中没有任何内容,您正在用任何内容替换 Header.html 文件中定义的内容。
您想使用 {% block blockname %}
符号来指定要在子模板中更改的内容,而不是要保持不变的内容。
This page on inheritence 是 Jinja 文档的相关部分,并提供了一个很好的示例。