Jinja2模板引擎

动态网页,可能有部分内容数据是需要计算出来的,是动态的内容

在函数中传递参数,在HTML页面中,利用{{}}获取传递的参数

​app.py​

from flask import Flask,render_template

app = Flask(__name__)


@app.route('/user', methods=['GET', 'POST'])
def user():
user_var="程序设计类辅助实验教学平台"
return render_template('demo3.html', html_var=user_var)

if __name__ == '__main__':
app.run()

demo3.html

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>This is a Demo3 Page</h1>
<h2>It is only using for test</h2>
这是传输过来的变量:{{ html_var }}
</body>
</html>

显示效果:

Flask学习(二)——Jinja2模板引擎_html


在模板中使用{# This is a annotation #}进行注释

传参时,列表和字典的使用:

​app.py​

from flask import Flask,render_template

app = Flask(__name__)


@app.route('/', methods=['GET', 'POST'])
def user():
user_var="程序设计类辅助实验教学平台"
list_test=['这是list的1','这是list的2','这是list的3','这是list的4','这是list的5']
dict_test={
'name': "这是测试name",
'key': "这是测试key"
}
return render_template('demo3.html', html_var=user_var,list_test=list_test,dict_test=dict_test)



if __name__ == '__main__':
app.run()

demo3.html

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>This is a Demo3 Page</h1>
<h2>It is only using for test</h2>
这是传输过来的变量:{{ html_var }}<br>
<h2>列表使用:</h2>
{{ list_test }}<br>
{{ list_test.1 }}<br>
{{ list_test[2] }}<br>
<h2>dict使用:</h2>
{{ dict_test }}<br>
{{ dict_test.name }}<br>
{{ dict_test['key']}}<br>
</body>
</html>

页面效果:

Flask学习(二)——Jinja2模板引擎_html_02


控制语句

在{% %}中进行写控制语句

{% for num in list_test %}
{% if num > 2 %}
{{ num }}<br>
{% endfor %}

过滤器的基本使用

{{ var_test|upper }}

常见的过滤器

过滤器名

说明

safe

渲染时不转义

capitalize

把值的首字母大写,其余小写

lower

把值转换成小写形式

upper

把值转换成大写形式

title

把值中每个单词的首字母都转换成大写

trim

把值的首位空格去掉

striptags

渲染之前把值中所有的HTML标签删掉