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