Flask模板 (二)

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 %}

 

posted @ 2018-03-23 23:13  Zephyrd  阅读(124)  评论(0编辑  收藏  举报