Python Flask,模板,Jinja2模板,模板變數,過濾器
demo.py(模板變數,過濾器):
# coding:utf-8 from flask import Flask, render_template # 匯入render_template app = Flask(__name__) @app.route("/index") def index(): data = { "name": "python", "age": 18, "my_dict": {"city": "sz"}, "my_list": [1, 2, 3, 4, 5], "my_int": 0 } # 渲染模板 return render_template("index.html", **data) # 模板變數以鍵值對的形式傳。 (Django中直接傳字典,Flask需要拆包) if __name__ == '__main__': app.run(debug=True)
templates/index.html(模板):
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>模板</title> </head> <body> <p>name = {{ name }}</p> <p>age = {{ age }}</p> <p>my_dict: city= {{ my_dict["city"] }}</p> <p>my_dict: city= {{ my_dict.city }}</p> <!-- 可以通過[]或.的方式獲取字典中對應鍵的值 --> <p>my_list: {{ my_list }}</p> <!-- [1, 2, 3, 4, 5] --> <p>my_list[my_int]: {{ my_list[my_int] }}</p> <!-- 通過[]的方式獲取列表中的值,下標可以是整型變數 --> <p>my_list[0] + my_list[1] = {{ my_list[0] + my_list[1] }}</p> <!-- 模板變數可以直接進行算術運算。Django需要通過過濾器進行運算 --> <p>{{"hello" + " python" }}</p> <!-- 字串可以直接進行拼接 --> <p>a{{" flask world " | trim | upper }}a</p> <!-- 過濾器,支援鏈式使用過濾器 --> <p>{{ "<em>hello</em>" | safe }}</p> <!-- 取消HTML轉義,預設轉義 --> </body> </html>
字串過濾器
safe:禁用Html轉義;
<p>{{ '<em>hello</em>' | safe }}</p>
capitalize:把變數值的首字母轉成大寫,其餘字母轉小寫;
<p>{{ 'hello' | capitalize }}</p>
lower:把值轉成小寫;
<p>{{ 'HELLO' | lower }}</p>
upper:把值轉成大寫;
<p>{{ 'hello' | upper }}</p>
title:把值中的每個單詞的首字母都轉成大寫;
<p>{{ 'hello' | title }}</p>
trim:把值的首尾空格去掉;
<p>{{ ' hello world ' | trim }}</p>
reverse:字串反轉;
<p>{{ 'olleh' | reverse }}</p>
format:格式化輸出;
<p>{{ '%s is %d' | format('name',17) }}</p>
striptags:渲染之前把值中所有的HTML標籤都刪掉;
<p>{{ '<em>hello</em>' | striptags }}</p>
列表過濾器
first:取第一個元素
<p>{{ [1,2,3,4,5,6] | first }}</p>
last:取最後一個元素
<p>{{ [1,2,3,4,5,6] | last }}</p>
length:獲取列表長度
<p>{{ [1,2,3,4,5,6] | length }}</p>
sum:列表求和
<p>{{ [1,2,3,4,5,6] | sum }}</p>
sort:列表排序
<p>{{ [6,2,3,1,5,4] | sort }}</p>