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