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
結果卻出現了異常的錯誤!
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
結果卻出現了異常的錯誤!

問題解決
將這個錯誤在網路上搜尋,可以找到解決的方法:
github.com/pallets/flask/issues/3455
github.com/pallets/flask/issues/3455
看目前的錯誤及網路上的回應,應該是系統內早期的 Flask 程式庫裡面的 werkzeug 的問題。
可以用安裝新版的程式庫來解決:
執行這一行指令,重新安裝新的 Flask
> pip install -U flask


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

就正常啟動!
Flask 伺服器執行結果

2. 加上第二個函式:getparam
參考書上說果要在網址列上取得輸入資訊,@app.route需要寫成('/函式名稱/')
因此我寫成這樣:
@app.route('/hello')
@app.route('/getparam/')
def hello():
return '歡迎來到 Flask'
def getparam(name):
return '{} 歡迎來到 Flask'.format(name)
程式語法看起來沒問題,但執行的時候:
因此我寫成這樣:
@app.route('/hello')
@app.route('/getparam/')
def hello():
return '歡迎來到 Flask'
def getparam(name):
return '{} 歡迎來到 Flask'.format(name)
程式語法看起來沒問題,但執行的時候:

500:Internal Server Error
這個網際網路錯誤訊息告訴我們伺服器的程式有錯誤,但我們的程式看起來都對。仔細分析一下,每一個 @app.route 後面都接著一個 對應的函式名稱。因此我改成一對一的對應形式:
@app.route('/hello')
def hello():
return '歡迎來到 Flask'
@app.route('/getparam/')
def getparam(name):
return '{} 歡迎來到 Flask'.format(name)
@app.route('/hello')
def hello():
return '歡迎來到 Flask'
@app.route('/getparam/')
def getparam(name):
return '{} 歡迎來到 Flask'.format(name)

程式取得參數
在我們重新安排 @app.route 和 對應的函式名稱後程式也有了正常的輸出結果。
結論
其實在軟體研發的路上,遇到錯誤是常見的事。重要的是靜下心來,推敲程式的結構,找出解決的方法,才是我們軟體開發人員的正常處理方式。
其實在軟體研發的路上,遇到錯誤是常見的事。重要的是靜下心來,推敲程式的結構,找出解決的方法,才是我們軟體開發人員的正常處理方式。
請先 登入 以發表留言。