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>
posted @ 2021-07-28 11:13  肥泽~  阅读(46)  评论(0编辑  收藏  举报