1. 程式人生 > >Flask模板 (二)

Flask模板 (二)

包含 其他 多個 nav OS div 文件中 模版 gpo

Jinja2模板支持宏。這裏的宏類似於Python中的函數。

{% macro render_comments %}
    <li>{{ comment }}</li>
{% endmacro %}

<ul>
    {% for comment in comments %}
        {{ render_comments(comment) }}
    {% endfor %}
</ul>

宏可通過單獨保存在文件中多次使用,在使用的時候導入:

{% import ‘macros.html‘ as macros %}
<ul
> {% for comment in comments %} {{ macro.render_comment(comment) }} {% endfor %} </ul>

需要多次使用的代碼片段可以寫入單獨文件,再包含於所有模板中,避免重復。在模板中輸入

{% include ‘comment.html‘ %}

模板的導入

模板分為多個塊,不影響HTML的編譯。使用{% block name %}和{% endblock %}來分割。

此處使用extends繼承其他模板的基礎內容。若後面沒有任何內容則相當於復制導入的模板,若再次定義模板中的塊則實現對原模版的更改。

若在原模版內容基礎上添加新的內容,則用變量{{ super() }}代表原模板的內容。

{% extends "bootstrap/base.html" %}

{% block title %}
IceTouched
{% endblock %}

{% block navbar %}
    ... ...
{% endblock %}

{% block content %}
<div class="container">
{% block page_content %}
{{super()}}
Hello
{% endblock %}
</div> {% endblock %}

Flask模板 (二)