Try   HackMD

Flask 2.x_基礎_01_建立第一個app

flask flask 2.x

在開始這個範例之前請先確認你已經有確實的安裝flask,如果還沒有也不用擔心,只需要簡單的安裝命令:

pip install flask

安裝之後各種相依套件就會自動載入,我們就直接開始建置第一個應用。整個過程都是配合官方文件的Quickstart再加上一點自己的說明。

開發工具的部份就請自行決定是使用vs code、pyCharm或是其它你所熟悉的工具。個人所採用的是pyCharm。

記得,開發app的第一個動作一定就是建立一個虛擬環境,除非你是直接在container內開發。

建立第一個app

首先,建立一個app.py的文件,文件內的程式碼如下:

from flask import Flask app = Flask(__name__) @app.route('/') def hello_world(): return '<p>Hello Flask.</p>'
  • line 1:import需求套件
  • line 3:new一個Flask object,給定的參數__name__就當做是約定俗成的一個作法,主要是讓程式知道根目錄所在
  • line 6:利用裝飾器將hello_world包裝成一個路由(router),其url為/
  • line 8:回傳的東西預設為html,這邊設置一個tag p顯示Hello Flask.

就這樣,先保存它。

執行第一個app

打開你的command line,pyCharm的話就是alt + f12,並且輸入下面命令:

flask --app app run

--app後面所接的app就是跟flask說應用程式的所在,以我們的範例就是app.py,如果是官方範例所設置的話就是hello.py

正常來說在執行上面命令之後會得到下面回應:

 * Serving Flask app 'app'
 * Debug mode: off
WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.
 * Running on http://127.0.0.1:5000
Press CTRL+C to quit

執行命令接的參數還有很多,但不急,總是會慢慢瞭解。

成功執行命令之後系統會跟我們說連線的ip+port,很明顯的就是127.0.0.1:5000,點擊之後會看到如下內容:

Image Not Showing Possible Reasons
  • The image was uploaded to a note which you don't have access to
  • The note which the image was originally uploaded to has been deleted
Learn More →

系統在執行的時候有跟我們說這只是開發用的服務,一般來說我們不會在正式環境中這樣佈署,相關部份後續都會有說明。

簡單瞭解執行命令

Command Line Interface

基本上flask的命令功能是結合Click,這我之前有翻譯一半,不過還沒有翻譯完就是。

三個常用的執行參數說明:

  1. --app,基本上就是指定執行程式,如果你的執行程式也剛好叫app.py的話是可以不用特別指定的,直接flask run就可以,另外有幾種作法:
    • --app src/hello,指定src資料夾內的hello
    • --app hello:app2,指定hello中的app2,其中app2指的就是Flask的instance,也就是我們程式中所設置的app2 = Flask(__name__)
    • -app hello:create_app('dev'),這是工廠模式的作法,這邊並不打算說明,但這會是未來我們主要採用的方式
  2. --debug,當我們在執行命令中加入--debug的時候就代表進入debug mode,這對於我們開發時候除錯很有幫助
  3. --host,往上回頭看我們執行的時候,系統所給出的連線ip是127.0.0.1:5000,這是一個本機位置,可是當指定--host=0.0.0.0的時候就代表這個服務是open的,區網內的人都可以連線(除非你防火牆沒有設置開放對應port)

當然你還可以利用flask shell進入互動式命令,這可以在後續我們建置Model要初始化資料庫的時候會有機會用到,不急著說明。

結論

恭喜你,你已經成功執行第一個關於flask的應用程式,而且也知道執行應用程式的時候有三個常用的參數可以設置。目前來說,有疑問是正常的,沒疑問也不奇怪,正熱身呢。