應用程式設定

Flask 應用程式是 Flask 類別的一個實例。所有關於應用程式的事物,例如設定和 URL,都將在此類別中註冊。

建立 Flask 應用程式最直接的方式是在程式碼頂端直接建立一個全域 Flask 實例,就像前一頁的「Hello, World!」範例一樣。雖然這在某些情況下既簡單又實用,但隨著專案的成長,可能會導致一些棘手的問題。

您將在函式內部建立 Flask 實例,而不是全域建立。此函式稱為應用程式工廠。應用程式所需的任何設定、註冊和其他設定都將在函式內部完成,然後將傳回應用程式。

應用程式工廠

是時候開始編碼了!建立 flaskr 目錄並新增 __init__.py 檔案。__init__.py 具有雙重職責:它將包含應用程式工廠,並且它告訴 Python 應該將 flaskr 目錄視為一個套件。

$ mkdir flaskr
flaskr/__init__.py
import os

from flask import Flask


def create_app(test_config=None):
    # create and configure the app
    app = Flask(__name__, instance_relative_config=True)
    app.config.from_mapping(
        SECRET_KEY='dev',
        DATABASE=os.path.join(app.instance_path, 'flaskr.sqlite'),
    )

    if test_config is None:
        # load the instance config, if it exists, when not testing
        app.config.from_pyfile('config.py', silent=True)
    else:
        # load the test config if passed in
        app.config.from_mapping(test_config)

    # ensure the instance folder exists
    try:
        os.makedirs(app.instance_path)
    except OSError:
        pass

    # a simple page that says hello
    @app.route('/hello')
    def hello():
        return 'Hello, World!'

    return app

create_app 是應用程式工廠函式。您將在本教學的稍後部分新增內容,但它已經做了很多事。

  1. app = Flask(__name__, instance_relative_config=True) 建立 Flask 實例。

    • __name__ 是目前 Python 模組的名稱。應用程式需要知道它的位置才能設定一些路徑,而 __name__ 是一種方便的方式來告訴它。

    • instance_relative_config=True 告訴應用程式設定檔是相對於實例資料夾。實例資料夾位於 flaskr 套件之外,並且可以保存不應提交到版本控制的本機資料,例如設定密碼和資料庫檔案。

  2. app.config.from_mapping() 設定應用程式將使用的一些預設設定

    • SECRET_KEY 由 Flask 和擴充套件使用,以確保資料安全。它被設定為 'dev' 以在開發期間提供方便的值,但在部署時應使用隨機值覆寫。

    • DATABASE 是 SQLite 資料庫檔案將儲存的路徑。它位於 app.instance_path 下,這是 Flask 為實例資料夾選擇的路徑。您將在下一節中了解更多關於資料庫的資訊。

  3. app.config.from_pyfile() 使用實例資料夾中 config.py 檔案中的值覆寫預設設定(如果存在)。例如,在部署時,這可以用於設定真正的 SECRET_KEY

    • test_config 也可以傳遞到工廠,並且將用於取代實例設定。這是為了讓您稍後在本教學中編寫的測試可以獨立於您已設定的任何開發值進行設定。

  4. os.makedirs() 確保 app.instance_path 存在。Flask 不會自動建立實例資料夾,但需要建立它,因為您的專案將在那裡建立 SQLite 資料庫檔案。

  5. @app.route() 建立一個簡單的路由,以便您可以在開始本教學的其餘部分之前看到應用程式運作。它在 URL /hello 和一個傳回回應的函式之間建立連線,在本例中是字串 'Hello, World!'

執行應用程式

現在您可以使用 flask 命令執行您的應用程式。從終端機告訴 Flask 在哪裡找到您的應用程式,然後在偵錯模式下執行它。請記住,您仍然應該在最上層的 flask-tutorial 目錄中,而不是 flaskr 套件中。

偵錯模式會在頁面引發例外時顯示互動式偵錯工具,並在您變更程式碼時重新啟動伺服器。您可以讓它保持執行,並在您遵循本教學時只需重新載入瀏覽器頁面即可。

$ flask --app flaskr run --debug

您會看到類似這樣的輸出

* Serving Flask app "flaskr"
* Debug mode: on
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
* Restarting with stat
* Debugger is active!
* Debugger PIN: nnn-nnn-nnn

在瀏覽器中造訪 http://127.0.0.1:5000/hello,您應該會看到「Hello, World!」訊息。恭喜,您現在正在執行您的 Flask 網頁應用程式!

如果另一個程式已經在使用連接埠 5000,當伺服器嘗試啟動時,您會看到 OSError: [Errno 98]OSError: [WinError 10013]。請參閱位址已被使用,以了解如何處理。

繼續前往定義和存取資料庫