jinja2
原创
©著作权归作者所有:来自51CTO博客作者wx636261b2d66e0的原创作品,请联系作者获取转载授权,否则将追究法律责任
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 %}