04 Python Flask 教學10 所有文章

【Flask教學系列】 5分鐘快速上手入門 Flask 教學

HelloWorld_Flask教學_Max行銷誌

一. Flask 的設計理念 “Micro”

喜歡 Flask 的 Micro 輕量化的設計理念,在架設 Flask 時就像是堆積木,可以自己決定要使用什麼積木 (擴充套件),不會有多餘的積木,達到簡單、輕量、高擴充性的架構。

The “micro” in microframework means Flask aims to keep the core simple but extensible. Flask won’t make many decisions for you, such as what database to use. Those decisions that it does make, such as what templating engine to use, are easy to change. Everything else is up to you, so that Flask can be everything you need and nothing you don’t.

Flask document #what-does-micro-mean

二. Flask,Hello World !

1. 安裝 Flask

$ pip install Flask

▍補充:關於如何管理 Python 版本與 pip 套件版本建議閱讀以下此篇文章
【Python教學】使用 pyenv 和 virtualenv 打造 Python 環境

2. 創建 Flask 架構

首先建立 main.py 如下:

| – Flask
` – main,py

並複製以下程式貼上在 main.py

# main.py

from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello, World!'

解釋第二行 app = Flask(__name__),__name__ 這邊是用來定位目前載入資料夾的位置,用來判別 template__folder 或 static_folder 資料夾位置。

Flask (import_namestatic_path=Nonestatic_url_path=Nonestatic_folder=’static’,template_folder
=’templates’instance_path=Noneinstance_relative_config=Falseroot_path=None)

Flask document #flask.Flask

解釋第三行 @app.route(‘/’),這邊使用 Python 內建的裝飾詞,來讓 Flask 監聽此 URL,並 return 返回結果。

route (rule**options)
A decorator that is used to register a view function for a given URL rule. This does the same thing as add_url_rule() but is intended for decorator usage

Flask document #flask.Flask.route

3. 運行 Flask 的兩種方式

▍選項1: (官方推薦此選項)

Flask 內建的 command line script 指令,在終端機輸入指令來運行 Flask:
export FLASK_APP 這行是環境設定待會 flask run 時,指定運行的 py 檔是 main.py
如果是 Windows 系統的朋友需將 export 改成 set

$ export FLASK_APP=main.py
$ flask run

Flask run 參數還可以加上以下指令

$ export FLASK_APP=main.py
$ flask run --reload --debugger --host 0.0.0.0 --port 80
  • –reload # 修改 py 檔後,Flask server 會自動 reload
  • –debugger # 如果有錯誤,會在頁面上顯示是哪一行錯誤
  • –host # 可以指定允許訪問的主機IP,0.0.0.0 為所有主機的意思
  • –port # 自訂網路埠號的參數

▍選項2:

export FLASK_APP=app.py
python -m flask run

此方法道理和選項一很像,只是用的不是 Flask 內建的 command line script,而是 Python -m <name> 的用法,一句話解釋就是 Python 會檢索 sys.path 路徑內的 name module 運行。

▍選項3 (不建議使用):

使用 app.run() 方法有時會造成沒有原因的異常錯誤,或執行多次部分程式,所以在 Flask 0.11 後官方推出了上面的 command line script 方法,關於 Flask 官方文件中有說明此問題。
但部分網路上的教學是早期的文章,所以還是在教此方法,建議改用選項一的方法來執行 Flask server。

This works well for the common case but it does not work well for development which is why from Flask 0.11 onwards the flask method is recommended. The reason for this is that due to how the reload mechanism works there are some bizarre side-effects (like executing certain code twice, sometimes crashing without message or dying when a syntax or import error happens).

Flask document #in-code

在 main.py 的下方加入 if name == ‘main‘:

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

並在終端機輸入以下指令

$ python app.py

3. Flask 運行後

▍終端機顯示:

 * Serving Flask app "main.py" (lazy loading)
 * Environment: production
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production WSGI server instead.
 * Debug mode: off
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
 * Restarting with stat
 * Debugger is active!

為什麼會在終端機內裡面有顯示警告:

WARNING: This is a development server. Do not use it in a production deployment.

這邊代表著目前使用的環境是 production,如果不想看到這行警告,未來產品要上線後只需要將 FLASK_ENV 環境設置成 development 的模式就不會在顯示警告囉!

$ export FLASK_ENV=development

其中可以看到 Restarting 和 Debugger 顯示如下,代表 reload 和 debugger 都被啟動了

  • Restarting with stat
  • Debugger is active!

而 Running on http://127.0.0.1:5000/,進入網址後就可以看到 Hello, World!

如果都運作正常,那恭喜你已經完成了 5分鐘快速上手入門 Flask 的教學!

關於 Flask 教學的延伸閱讀:

▍關於 Flask 教學系列目錄:

▍其他 Flask 相關教學:

那麼有關於【Flask教學系列】 5分鐘快速上手建立 Flask 的介紹就到這邊告一個段落囉!有任何問題可以在以下留言~

有關 Flask 的最新文章,都會發佈在 Max 的 Facebook 粉絲專頁,如果想看最新更新,還請您按讚或是追蹤唷!

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *