08 flask模版 jinja2 傳值,控制塊,過濾器
模板的語法:
1. 在模板中獲取view中傳遞的變數值:{{ 變數名key }}
render_template('模板網頁名字',key=value,key=value)
可傳遞型別:
name = '沈凱' # str
age = 18 # int
friends = ['建義', '陳璟', '小嶽嶽', '郭麒麟'] # list
dict1 = {'gift': '大手鐲', 'gift1': '鮮花', 'gift2': '費列羅'} # dict
girlfriend = Girl('美美', '安徽阜陽') # 自定義的類構建的型別:Girl物件
模板網頁中或取傳遞的資料:
{{ list.0 }} 同 {{ list[0] }}
{{ dict.key }} 同 {{ dict.get(key) }}
{{ girl.name }} 同 {{ 物件.屬性 }}
2. 控制塊:
{% if 條件 %}
條件為True
{% else %}
條件為False
{% endif %}
=====================================
{% for 變數 in 可迭代的物件 %}
for迴圈要做的任務
{% endfor %}
=====================================
for迴圈中可以使用loop變數
loop.index 序號從1開始
loop.index0 序號從0開始
loop.revindex reverse 序號是倒著的
loop.revindex0
loop.first 布林型別 是否是第一行
loop.last 布林型別 是否是第二行
{% for user in users %} <tr {% if loop.index == 3 %} style="background-color: deeppink"{% endif %}> <td> {{ loop.index }}</td> <td>{{ user.username }}</td> <td>{{ user.password }}</td> <td>{{ user.addr }}</td> <td>{{ user.phone }}</td> </tr> {% endfor %}
3.過濾器
過濾器的本質就是函式
模板語法中過濾器:
{{ 變數名 | 過濾器(*args) }}
{{ 變數名 | 過濾器 }}
常見的過濾器:
1. safe : 禁用轉譯
msg = '<h1>520快樂!</h1>'
return render_template('show_2.html', girls=girls, users=users, msg=msg)
不想讓其轉譯標籤:
{{ msg | safe }}
2. capitalize:單詞的首字母大寫
{{ n1 | capitalize }}
3.lower和upper:大小寫的轉換
4.title 一句話中每個單詞的首字母大寫
msg = 'She is a beautiful girl'
{{ msg | title}}
5.reverse 翻轉
{{ n1 | reverse}}
6.format
{{ '%s is %d years old' | format('lily',18) }}
7.truncate 字串截斷
list的操作:
{# 列表過濾器的使用 #}
{{ girls | first }} #列表第一個值
{{ girls | last }} #列表最後一個值
{{ girls | length }} #列表長度
{{ girls | sum }} #整型列表求和
{{ [1,3,5,7,9] | sum }}
{{ [1,8,5,7,3] | sort }} #整形列表排序
dict:
{% for v in users.0.values() %} ---->獲取值
<p>{{ v }}</p>
{% endfor %}
<hr>
{% for k in users.0.keys() %} ----》獲取鍵
<p>{{ k }}</p>
{% endfor %}
<hr>
{% for k,v in users.0.items() %} ---》獲取鍵值
<p>{{ k }}---{{ v }}</p>
{% endfor %}
自定義過濾器