如何创建可以添加到文件烧瓶中的 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 文档的相关部分,并提供了一个很好的示例。