Flask - 模版(Jinja2)
一.渲染模板
from flask import Flask, render_template app = Flask(__name__) @app.route('/') def index(): return render_template('index.html') @app.route('/user/<name>') def user(name): return render_template('user.html', name=name) if __name__ == '__main__': app.run(debug=True)
render_template用法,第一个参数为模板的名称,后续的参数为传入到模板中的变量
user.html
<h1>Hello,{{ name }}</h1>
二.变量
1.变量
Jinja2能够识别所有类型的变量,甚至是一些复杂的类型,例如字典,列表和对象。
hello.py
from flask import Flask, render_template app = Flask(__name__) @app.route('/') def index(): return render_template('index.html') class Person(object): def __init__(self, name, age, gender='male'): self.name = name self.age = age self.gender = gender def get_name(self): return self.name @app.route('/user/<name>') def user(name): l1 = [1, 2, 3, 4, 5, 6, 7] d1 = {'k1': 'v1', 'k2': 'v2'} p1 = Person('alex', '30') return render_template('user.html', name=name, l1=l1, p1=p1, d1=d1) if __name__ == '__main__': app.run(debug=True)
user.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <h1>Hello,{{ name }}</h1> {{ l1.__len__() }} {{ d1.get('k1') }} {{ p1.age }} {{ p1.get_name() }} </body> </html>
2.过滤器
可以使用过滤器修改变量,过滤器名添加在变量名之后,用竖线隔开
# 将输出的名字首字母变成大写 {{ p1.get_name() | capitalize }}
常用的Jinja2变量过滤器
safe 渲染值时不转义
capitalize 把单词的首字母变成大写,其他字母变成小写
lower 把单词转换为小写
upper 把单词转换为大写
title 把值中的每个单词的首字母都转换为大写
trim 把值的首尾空格去掉
striptags 渲染之前把值中所有的HTML标签都删掉
safe过滤器特别说明一下,默认情况下,出于安全考虑,Jinja2会转义变量中所有的标签,所以在使用safe时绝对不要在不可信的值上使用safe过滤器,比如用户在表单中输入的文本。
三.控制结构
Jinja2提供了多种控制结构,可用来改变模版的渲染流程。
if else
{% if user %}
<h1>Hello,{{ user }}</h1>
{% else %}
<h1>Hello,Stranger</h1>
{% endif %}
浙公网安备 33010602011771号