Jinja2模板引擎语法

模板案例

eg:

<!doctype html>
<title>Hello template</title>
{% if name %}
  <h1>Hello {{ name }}!</h1>
{% else %}
  <h1>Hello flask!</h1>
{% endif %}

从上面的例子可以发现:
模板表达式是包含在分割符{{}}内
模板的控制语句都是包含在分割{% %}中
模板注释都是包含在分隔符{# #}中

  • 变量 : 视图传递过来的数据 {{ 变量名称 }}
  • 标签 : 就是python中的循环分支结构... {% 标签名称 %}

表达式分类

表达式一般分为以下几种:

表达式种类 举例
变量(最常用) {{name}}
基础类型( 字符串,数值,列表,元祖,字典,布尔值) 一般配合表达式使用{{ 'string' }}
运算表达式(算术与逻辑) {{ False and True }} {{ 2 + 3 }}
过滤器' | ' ,测试器' is ' 一般配合表达式
函数调用 {{ func( ) }}
“in”操作符 {{ 1 in [1,2,3] }}
字符串连接符”~” {{ 'like' }}

变量过滤器

变量的值可以使用过滤器修改。过滤器在添加变量名之后,两者之间以竖线分隔。例如,下述模板把name变量的值变成首字母大写的形式:

Hello, {{name|capitalize}}

下面是Jinja2变量过滤器

过滤器名 说明
safe 渲染值时不转义
capitalize 把值的首字母转换成大写,其他字母转换成小写
lower 把值转换成小写形式
upper 把值转换成大写形式
title 把值中每个单词的首字母都转换成大写
trim 把值首尾空格删掉
striptages 渲染之前把值中所有的HTML标签都删掉

控制结构

在模板中使用条件判断语句

{% if user %}
   Hello, {{ user }} !
{% else %}
   Hello, Stranger !
{% endif %}

for循环渲染一组元素

<ul>
{% for comment in comments %}
      <li>{{ comment }}</li>
{% endfor %}
</ul>
原文地址:https://www.cnblogs.com/Acapplella/p/15069096.html