变量
在Jinja2模板(1)中的例2中,{{name}}结构表示一个变量,它是一种特殊的占位符,告诉模板引擎这个位置的值从渲染模板时使用的数据中获取。
Jinja2能识别所有类型的变量。
可以使用过滤器修改变量:过滤器名添加在变量名之后,中间使用竖线分隔开,如,下面的模板以首字母大写形式显示变量name的值:
Hello, {{name | capitalize}}
Jinja2常用的过滤器:
1.safe:渲染值时不转义(需要显示变量中存储的HTML代码时候,可以使用safe过滤器,注:在不可信的值上不要使用此过滤器)
2.capitalize:把值的首字母转换成大写,其他字母转换成小写
3.lower:把值转换成小写形式
4.upper:把值转换成大写形式
5.title:把值中每个单词的首字母都转换成大写
6.trim:把值的首尾空格去掉
7.striptags:渲染前把值中所有的HTML标签都删掉
控制结构
1.条件控制语句
{% if user %}Hello, {{ user }}!{% else %}Hello, Stranger!{% endif %}2.for循环渲染一组元素
<ul> {% for comment in comments %} <li>{{ comment }}</li> {% endfor %} </ul>
3.还支持宏,类似于Python代码中的函数
{% macro render_comment(comment) %} <li>{{ comment }}</li> {% endmacro %} <ul> {% for comment in commets %} {{ render_comment(comment) }} {% endfor %} </ul>
4.若要重复使用宏,可将其保存在单独的文件中,然后在需要使用的模板中导入
{% import 'macros.html' as macros %} <ul> {% for comment in comments %} {{ macros.render_comment(comment) }} {% endfor %} </ul>
5.模板继承
首先,创建一个名为base.html的基模板
<html> <head> {% block head %} <title>{% block title %}{% endblock %} - My Application </title> {% endblock %} </head> <body> {% block body %} {% endblock %} </body> </html>
block标签定义的元素可以在衍生模板中修改。下例为基模板的衍生模板:
{% extends "base.html" %} {% block title %} Index {% endblock %} {% block head %} {{ super() }} <style> </style> {% endblock %} {% block body %} <h1>Hello World!</h1> {% endblock %}
本文详细介绍了Jinja2模板中的变量使用,包括如何通过{{name}}表达式引用变量及使用capitalize等过滤器改变变量的显示形式。同时,探讨了Jinja2的控制结构,如for循环、宏的使用,以及模板继承的概念,其中宏可保存在单独文件中供复用,模板继承允许在衍生模板中修改基模板的block内容。
1998

被折叠的 条评论
为什么被折叠?



