接續上篇的【五、使用模板】
傳送參數:在路由中設定參數。 Ex:在 hello
網頁傳送 name
字串參數
@app.route('/hello/<string:name>')
在 render_template
中加入第二個參數
render_template('網頁檔案名稱', **locals()) # **locals()指傳送所有參數及區域變數
網頁檔中接收參數及變數的方法:
{{參數名稱}}
範例:改編於書本上的範例
網址輸入 127.0.0.1:5000/hello/peiiiii
顯示的結果
3. 網頁檔使用靜態檔案
靜態檔案: 圖片、樣式檔案等等。一般會將靜態檔案放置在 static
資料夾中,使用檔案的語法:
{{ url_for('static', filename=靜態檔案名稱) }}
範例:
執行後輸入 127.0.0.1:5000/hello/名字
Template 模板有自己的語言,模板的組成:
名稱 | 說明 | 範例 |
---|---|---|
變量 | 將傳送內容顯示在模板指定的位置 | {{username}} |
標籤 | if 條件指令 | {% if found %} |
標籤 | for 迴圈指令 | {% for item in items %} |
單行註解 | 註解文字 | {#註解文字#} |
文字 | HTML 標籤或文字 | <title>顯示的模板</title> |
變量就是要顯示的變數,可以是一般的變數,也可以是字典變數或串列。
以 {{變數}}
、{{字典變數.鍵}}
、{{串列.索引}}
語法來表示。
變量類型 | Template 語法 | Python 語法 | 說明 |
---|---|---|---|
字典 | {{dict1.name}} |
dict1[name] | name 是字典的鍵 |
串列 | {{list1.0}} |
list1[0] | list1 是串列 |
方法 | {{obj1.show}} |
obj1.show() | show() 是 obj1 物件的方法 |
範例:
執行後網址輸入 127.0.0.1:5000/variable
標籤
Template 模板的條件判斷( if )指令、迴圈( for )指令 稱為標籤
(1)單向判斷式
語法為:
{% if 條件 %}
程式區塊
{% endif %}
舉例來說:成績大於 90 顯示優等
{% if score >= 90 %}
優等
{% endif %}
(2)雙向判斷式
語法為:
{% if 條件 %}
程式區塊
{% else %}
程式區塊
{% endif %}
舉例來說:若成績大於 60 ,顯示及格,否則顯示不及格
{% if score >= 60 %}
及格
{% else %}
不及格
{% endif %}
(3)多向判斷式
語法為:
{% if 條件 %}
程式區塊
{% elif 條件 %}
程式區塊
{% elif 條件 %}
程式區塊
.
.
.
{% else %}
程式區塊
{% endif %}
舉例來說:分數大於 90 顯示 A 級,分數介於 80-89 顯示 B 級,分數介於 70-79 顯示 C 級,分數介於 60-69 顯示 D 級,分數小於 60 顯示 F 級
{% if score >= 90 %}
A
{% elif score >= 80 %}
B
{% elif score >= 70 %}
C
{% elif score >= 60 %}
D
{% else %}
F
{% endif %}
(4)for 迴圈指令
語法為:
{% for 變數 in 串列 %}
程式區塊
舉例來說:宣告變數為 list1 的串列,以 for 迴圈顯示 list1
list1 = range(1,7)
{% for i in list1 %}
{{i}},
{% endfor %} #執行結果為 1, 2, 3, 4, 5, 6
參考資料:Python與LINE Bot機器人全面實戰特訓班-Flask最強應用