1. 程式人生 > 實用技巧 >08 flask模版 jinja2 傳值,控制塊,過濾器

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 %}

自定義過濾器