如何创建一个可以添加到文件瓶中的标题

时间:2015-04-01 23:55:14

标签: python html jinja2

我想知道如何创建一个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>

我做错了什么还是我可以采取另一种方法?

1 个答案:

答案 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文档的相关部分,并提供了一个很好的示例。