http://docs.jinkan.org/docs/jinja2/templates.html#id2
分为api-sdk和html写法,渲染时模板里面都是python语法
表达式
新版行语句
开头为表达式
开头为注释
for语句
{% for item in seq -%}
{{ item }}
{%- endfor %}
loop.index 当前循环迭代的次数(从 1 开始)
loop.index0 当前循环迭代的次数(从 0 开始)
loop.revindex 到循环结束需要迭代的次数(从 1 开始)
loop.revindex0 到循环结束需要迭代的次数(从 0 开始)
loop.first 如果是第一次迭代,为 True 。
loop.last 如果是最后一次迭代,为 True 。
loop.length 序列中的项目数。
loop.cycle
if语句
{% if kenny.sick %}
Kenny is sick.
{% elif kenny.dead %}
You killed Kenny! You bastard!!!
{% else %}
Kenny looks okay — so far
{% endif %}
读取变量
{{ foo.bar }}
赋值变量
{% set key, value = call_something() %}
过滤器
{{ name|striptags|title }}
也可以接收函数过滤器
{{ list|join(’, ') }}
也可以这种写法
{% filter upper %}
This text becomes uppercase
{% endfilter %}
注释
{# … #}
不转义
{% raw %}
{% endraw %}
宏(代码展开)函数
{% macro input(name, value=’’, type=‘text’, size=20) -%}
{%- endmacro %}
调用宏
先import模板
{{ input('username') }}
模板集成
定义一个模板函数,子模板同名函数可以覆盖。统一模板文件不能定义同名模板函数。
如果想多次使用这个函数,可以后面的调用{{ self.fun_name() }}
模板函数默认不可以访问函数外变量。需要添加scoped声明才行,子模板不需要在添加scoped 声明
{% block fun_name %}
{% endblock %}
{% block fun_name scoped %}
{% endblock %}
派生模板
{% extends “xx.html” %}
子模板,定义模板函数(若存在就覆盖)
{% block fun_name %}
{{ super() }}
{% endblock %}