iT邦幫忙

2022 iThome 鐵人賽

DAY 11
1
自我挑戰組

Python and LINE Bot系列 第 11

[Day11] Flask 網站應用程式(上)

  • 分享至 

  • xImage
  •  

About Flask

Flask 是輕量型網站框架,檔案結構簡單,功能完整。

一、Flask的特色

  • 不須付錢
  • 不用將網頁程式上傳到外部網頁伺服器測試,只要啟動內建的伺服器就能夠瀏覽網頁
  • 有強大功能的偵錯器,若執行時發生錯誤,會自動將錯誤資訊傳送給使用者
  • 使用 Unicode 編碼,使用者不須擔心編碼的問題
     

二、Flask應用程式架構

Flask 程式的基本架構

from flask import Flask   #匯入Flask模組
app = Flask(__name__)     #建立Flask物件

路由一
路由二
路由三
...

if __name__ == '__main__'
    app.run()             #執行Flask程式

 

建立路由的語法:

@app.route('網頁路徑')
def 函式名稱():
    處理程式

裝飾器 (decorator): 「@」稱為裝飾器,功能是將網頁路徑及函式結合在一起,在瀏覽器輸入網址後就會執行函式。

網頁路徑: 網址後面的路徑。例如下方範例的
網頁路徑設為「 / 」,網址為 http://127.0.0.1:5000/ ,就會顯示網站首頁;
網頁路徑設為「 /grape 」時,網址為 http://127.0.0.1:5000/grape ,就會顯示繞口令 (吃葡萄不吐葡萄皮) 的頁面;
網頁路徑設為「 /look 」時,網址為 http://127.0.0.1:5000/look ,就會顯示俗語 (三思而後行的英文) 的頁面。

函式名稱: 可以自訂函式名稱。若將函式名稱及網頁路徑設為相同名稱,會比較容易對照函式對應的網頁路徑。

範例:
https://ithelp.ithome.com.tw/upload/images/20220920/20151448op90p52C6F.png

複製網址後貼到瀏覽器上就會顯示內容
https://ithelp.ithome.com.tw/upload/images/20220920/20151448yveeaqCQ6H.png
https://ithelp.ithome.com.tw/upload/images/20220920/20151448ilzSWjmGqM.png

在網址列後面加上 /grape 後,會顯示出對應的內容
https://ithelp.ithome.com.tw/upload/images/20220920/20151448KewkXK6Q7p.png

在網址列後面加上 /look 後,會顯示出它對應的內容
https://ithelp.ithome.com.tw/upload/images/20220920/20151448ZCcJEeRrpB.png
 

多網址對應相同函式的路由語法:不同網址顯示相同內容

@app.route('網頁路徑一')
@app.route('網頁路徑二')
...
def 函式名稱():
    處理程式

範例:
https://ithelp.ithome.com.tw/upload/images/20220920/20151448vMiqXmARnM.png

https://ithelp.ithome.com.tw/upload/images/20220920/20151448BiYsxsLx1s.png
https://ithelp.ithome.com.tw/upload/images/20220920/20151448v9MaCKimBx.png
說明:路徑為 //home 都會執行 home 函式,顯示出的內容是一樣的。
 

三、建立動態路由

大部分網頁非靜態網頁,網頁內容可能需要動態變化,這時候就可以由路由來傳送參數給網頁處理。路由設定傳遞參數的語法:

@app.route('網頁路徑/<資料型態一:參數1>/<資料型態二:參數2>/<資料型態三:參數3/....')

※資料型態可以省略,預設值為string。參數用 < > 符號包圍。

Flask 提供的「資料型態」表如下:

資料型態 說明
string (預設值)可輸入任何字串
int 可輸入整數
float 可輸入浮點數
path 可輸入包含「 / 」字元的路徑名稱

範例:傳送資料型態為串列的參數 name 到 home 網址
https://ithelp.ithome.com.tw/upload/images/20220921/20151448yg0cCXbF5F.png
https://ithelp.ithome.com.tw/upload/images/20220921/20151448imedfiZ75s.png

 
 
 
 
 

參考資料:Python與LINE Bot機器人全面實戰特訓班-Flask最強應用


上一篇
[Day10] 函式
下一篇
[Day12] Flask 網站應用程式(中)
系列文
Python and LINE Bot30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言