Flask プロジェクトの構造
この説明では、Flask と Python のブループリント アプローチを利用して大きな Flask アプリケーションを構築する方法を学びます。
Flask と Python のブループリント アプローチを利用して Big Flask アプリケーションを構築する
Flask のドキュメントに Flask の設計図について書かれていることはわかっています。 それでも、Flask のドキュメントを読んだだけでは、初心者が Flask アプリケーションを構築する方法を理解するのが難しい場合があります。
そこで、簡単な言葉を使って分解し、Flask Blueprint
クラスを使用して Flask アプリケーションを構築する方法を説明したいと思います。
作業を開始するには、次のコマンドを使用して仮想環境を作成し、Flask をインストールします。 仮想環境を作成したら、これを有効にしてFlaskパッケージをインストールします。
python -m venv our_venv
.\our_venv\Scripts\Activate.ps1
pip install flask
ブループリントを使用すると、Flask アプリケーションのさまざまなインスタンスを作成し、さまざまなパッケージでコードの一部を再利用できるため、常にゼロから作成する必要はありません。
まず、app
というディレクトリを作成します。 root
ディレクトリ内に、run.py
というファイルを作成します。 app ディレクトリ内に、この app ディレクトリを作成して Python でパッケージを作成し、__init__.py
ファイルを作成します。
次に進み、__init__.py
ファイル内で Flask をインポートし、アプリケーションを作成する関数 create_app()
を定義します。 Flask
のインスタンスを作成し、app=Flask(__name__)
のように app
変数に格納してから、このオブジェクトを返します。
ここで、アプリから create_app
関数をインポートする必要があり、この run.py
ファイルを実行するときにアプリケーションを実行したいと考えています。 これを行うには、次の構文を使用します。
アプリケーションを作成するとき、連携してアプリケーションを作成するさまざまなコンポーネントを作成します。 app
ディレクトリ内に作成できます。 app
ディレクトリ内に main
というディレクトリを作成し、この main
ディレクトリ内に __init__.py
ファイルを作成してパッケージにします。
routes.py
ファイルを作成し、このファイル内で Flask モジュールから Blueprint
クラスをインポートし、ブループリントに main
という名前を付けて __name__
に渡します。
基本的に、Flask
クラスを使用して Flask アプリケーションをインスタンス化するのと同様に、単純な Flask アプリケーションを作成する方法です。
main = Blueprint("main", __name__)
次に、ルーティング ページのルートを作成し、Main_Page()
関数を定義して、ページを返します。
app
ディレクトリ内にある __init__.py
ファイル内で、ブループリントを登録する必要があるため、ブループリント インスタンスを作成した app.main.routes
から main
をインポートします。 次に、app.register_blueprint()
を使用して、ブループリント、つまり main
を登録します。
同様に、通常の Flask アプリケーションにテンプレートを追加すると、templates
というディレクトリを作成でき、このディレクトリ内に HTML ファイルを生成できます。 また、Flask アプリケーションの構成を制御することもできます。これは非常に簡単です。
root
ディレクトリ内に config.py
ファイルを作成できます。このファイル内に Config
というクラスを作成できます。このクラスには、TESTING
と DEBUG
が False
に設定されます。
ここで、Development
と呼ばれる別のクラスを作成することもできます。このクラスは、Config
を継承し、DEBUG
を True
に上書きします。 Config
を継承する TESTING
というクラスをもう 1つ定義します。 TESTING
プロパティは True
に等しくなります。
多くの構成を持つことができますが、構成を使用して blueprints アプリケーションを構成する方法を理解できるように、これを単純にしたいだけです。
次に、ディクショナリとなる config
という変数を作成します。このディクショナリには、これらのキーの値として Development
および TESTING
クラスが含まれます。
class Config(object):
TESTING = False
DEBUG = False
class Development(Config):
DEBUG = True
class TESTING(Config):
TESTING = True
config = {"development": Development, "testing": TESTING}
__init__.py
ファイルに戻り、Config
ファイルから config
辞書をインポートします。 create_app()
関数内で app_config
を渡し、この引数に開発を渡す必要があります。
ここで、app.config.from_object(config[app_config])
を使用して Flask アプリを渡し、このコードを関数ブロック内に記述する必要があります。 次に、.env
ファイルと変数をセットアップするのに便利な dotenv
パッケージをインストールします。それらはアプリケーション全体で使用でき、簡単に切り替えることができるからです。
pip install python-dotenv
次に、.env
ファイルも作成し、このファイル内で、本番環境から開発環境への Flask 環境を設定します。 これをコード FLASK_ENV=development
のように記述して保存するだけです。
必要な数のパッケージを作成できるため、app ディレクトリ内に移動して auth
パッケージを作成できます。このパッケージの代わりに、ログインとログアウトなどを行うことができます。 static
フォルダーを作成し、通常の Flask アプリと同様に、静的アサートをこのディレクトリ内に保持することもできます。
ここで、最初に作成したこの run.py
ファイルを実行します。 現在、環境は本番環境ではなく開発モードであり、アプリは正常に動作していることがわかります。
このブループリント アプローチは、アプリケーションを構造化してより洗練されたものにし、より広範なアプリケーションを構成するのに役立ちます。
run.py
ファイルのコード:
from app import create_app
if __name__ == "__main__":
create_app().run(debug=True)
__init__.py
ファイルのコード:
from flask import Flask
from config import config
def create_app(app_config="development"):
app = Flask(__name__)
app.config.from_object(config[app_config])
from app.main.routes import main
app.register_blueprint(main)
return app
routes.py
ファイルのコード:
from flask import Blueprint
main = Blueprint("main", __name__)
@main.route("/", methods=["GET"])
def Main_Page():
return "Hi there!"
Flask プロジェクトの構造は次のようになります。
Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.
LinkedIn