Flask 是 Python 開發環境中內建的安裝程式庫,適合發展簡單、輕量級的網站或網路服務。
本文紀錄第一次啟動 Flask 伺服器服務所遇到的問題,問題解決步驟,以及多個函式在一個檔案裡輸出的處理方式。

 

1. 寫一個最簡單的程式,並試著啟動 Flask 伺服器服務

from flask import Flask
app = Flask(__name__)

@app.route('/hello')
def hello():
return '歡迎來到 Flask'

if __name__ == '__main__':
app.run()

前面2行程式告訴我們要使用 Flask 程式庫,
並且這是一個 Flask 格式的程式。

第3行 @app.route('/hello')
是對外部開放的函式名稱。'/hello' 的名稱是在網址列輸入
/ 加上 hello函式

要測試前,Flask 伺服器要先啟動。
在命令列模式下執行:
python name.py

結果卻出現了異常的錯誤!
 

1_1_serverLaunchFail.png

問題解決

將這個錯誤在網路上搜尋,可以找到解決的方法:
github.com/pallets/flask/issues/3455

看目前的錯誤及網路上的回應,應該是系統內早期的 Flask 程式庫裡面的 werkzeug 的問題。
可以用安裝新版的程式庫來解決:

執行這一行指令,重新安裝新的 Flask
> pip install -U flask
 

_Solved_Instructions.png

_Solved_Instructions_final.png

再執行一次啟動 Flask 伺服器的指令:

3_1_launchFlaskServer.png

就正常啟動!

 

Flask 伺服器執行結果

Flask 伺服器告訴我們啟動的位址和埠號是 127.0.0.1:5000
要執行我們寫的程式還要再加上 /hello
最後就是:127.0.0.1:5000/hello
 

3_2_WebDisplay.png

 

2. 加上第二個函式:getparam

參考書上說果要在網址列上取得輸入資訊,@app.route需要寫成('/函式名稱/')
因此我寫成這樣:

@app.route('/hello')
@app.route('/getparam/')
def hello():
return '歡迎來到 Flask'

def getparam(name):
return '{} 歡迎來到 Flask'.format(name)

程式語法看起來沒問題,但執行的時候:
 

4_2_exp2_SecondError_500.png

500:Internal Server Error

這個網際網路錯誤訊息告訴我們伺服器的程式有錯誤,但我們的程式看起來都對。仔細分析一下,每一個 @app.route 後面都接著一個 對應的函式名稱。因此我改成一對一的對應形式:

@app.route('/hello')
def hello():
return '歡迎來到 Flask'

@app.route('/getparam/')
def getparam(name):
return '{} 歡迎來到 Flask'.format(name)
 

5_2_fine_getParam_circle.png

 

程式取得參數

在我們重新安排 @app.route 和 對應的函式名稱後程式也有了正常的輸出結果。
 
結論
其實在軟體研發的路上,遇到錯誤是常見的事。重要的是靜下心來,推敲程式的結構,找出解決的方法,才是我們軟體開發人員的正常處理方式。
 
創作者介紹
創作者 小木屋 的頭像
小木屋

小木屋

小木屋 發表在 痞客邦 留言(0) 人氣( 276 )