【 Flask 教學 】Flask Factory 介紹

Flask 是一個輕量的 Python 網頁應用框架,因為它簡單易用而廣受歡迎。其中,Flask Factory 是一個新的概念,可以更加靈活地建立 Flask 應用程式。本文將介紹 Flask Factory 的概念以及如何在 Flask 應用程式中使用它。

Flask Factory 是什麼?

在傳統的 Flask 應用程式中,我們會在一個檔案中建立 Flask 應用程式物件,然後將它與路由和視圖函式一起定義在同一個檔案中。然而,這種方式的維護和擴展性很差。Flask Factory 的概念就是將 Flask 應用程式物件的建立和設定分離出來,以便更靈活地管理 Flask 應用程式。

Flask Factory 通常會分為三個部分:

  1. 工廠函式:這是建立 Flask 應用程式物件的函式,通常是一個叫做 create_app 的函式。這個函式會負責建立 Flask 應用程式物件、設定 Flask 應用程式以及註冊路由和視圖函式。
  2. 設定:這是 Flask 應用程式的設定,可以使用 Python Class 或字典來定義。
  3. 視圖函式:這些是處理路由的函式,通常是一個或多個藍圖。

如何在 Flask 中使用工廠?

以下是一個簡單的 create_app 工廠函式範例:

1
2
3
4
5
6
7
8
9
10
11
from flask import Flask

def create_app():
app = Flask(__name__)
app.config['DEBUG'] = True

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

return app

在上面的範例中,create_app 函式建立了一個 Flask 應用程式物件,並定義了一個路由和一個視圖函式。此外,它還設定了 DEBUG 設定選項,以便在偵錯模式下執行應用程式。

這個工廠函式可以在另一個檔案中被呼叫,並使用以下程式碼啟動應用程式:

1
2
3
4
from myapp import create_app

app = create_app()
app.run()

在上面的範例中,create_app 函式在另一個名為 myapp 的模組中定義,然後被呼叫以建立 Flask 應用程式物件。然後,run 方法啟動了應用程式。

除了上面的範例,我們還可以使用工廠函式來建立複雜的 Flask 應用程式。例如,我們可以使用藍圖來組織視圖函式,使用 Flask 插件來擴展應用程式功能,等等。

以下是一個更複雜的工廠函式範例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
from flask import Flask
from myapp.views import main_bp, admin_bp
from myapp.extensions import db, login_manager

def create_app(config_object):
app = Flask(__name__)
app.config.from_object(config_object)

db.init_app(app)
login_manager.init_app(app)

app.register_blueprint(main_bp)
app.register_blueprint(admin_bp, url_prefix='/admin')

return app

在上面的範例中,create_app 函式建立了一個 Flask 應用程式物件,並使用 config_object 設定來設定應用程式。它還初始化了一些 Flask 插件,如 dblogin_manager,並將它們與應用程式關聯起來。最後,它註冊了兩個藍圖 main_bpadmin_bp,這些藍圖包含不同的視圖函式。

這個工廠函式可以在另一個檔案中被呼叫,並使用以下程式碼啟動應用程式:

1
2
3
4
5
from myapp import create_app
from myapp.config import ProductionConfig

app = create_app(ProductionConfig)
app.run()

在上面的範例中,create_app 函式在 myapp 模組中定義,然後使用 ProductionConfig 設定物件建立 Flask 應用程式物件。然後,run 方法啟動了應用程式。

總結一下,Flask Factory 是一個有用的概念,可以使我們更加靈活地建立和管理 Flask 應用程式。通過將建立 Flask 應用程式物件的過程分離出來,我們可以更輕鬆地進行擴展和維護。如果你還沒有嘗試過 Flask Factory,我們建議你嘗試一下,體驗一下其帶來的好處。

評論