[解決済み] Python Flaskアプリを複数ファイルに分割する
2022-12-18 23:10:51
質問
flaskアプリを複数のファイルに分割する方法がわからず困っています。
私はWebサービスを作成しており、私はちょうど私が1つの巨大なPythonファイルを持っていないように、異なるファイル(AccountAPI.py、UploadAPI.py、...)にAPIを分割したいのですが。
私はBlueprintsでこれを行うことができると読んだが、私はそのルートが私にとって正しいものであると完全に確信しているわけではありません。
最終的には、1 つのメイン python ファイルを実行し、他のファイルをインクルードして、実行時にそれらが 1 つの大きなファイルと見なされるようにしたいのですが。
例えば、私がMain.pyとAccountAPI.pyを持っている場合、私はこれを行うことができるようにしたいのです。
Main.pyを実行します。
from flask import Flask
import AccountAPI
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello World!"
if __name__ == "__main__":
app.run()
AccountAPI.pyです。
@app.route("/account")
def accountList():
return "list of accounts"
この例では明らかにうまくいかないと思いますが、そのようなことは可能なのでしょうか?
ありがとうございます。
どのように解決するのですか?
はい、ブループリントを使用するのが正しい方法です。あなたがやろうとしていることは、このように実現することができます。
メイン.py
from flask import Flask
from AccountAPI import account_api
app = Flask(__name__)
app.register_blueprint(account_api)
@app.route("/")
def hello():
return "Hello World!"
if __name__ == "__main__":
app.run()
アカウントAPI.py
from flask import Blueprint
account_api = Blueprint('account_api', __name__)
@account_api.route("/account")
def accountList():
return "list of accounts"
もしこれがオプションであるなら、異なるAPI/ブループリントをきれいに分離するために、異なるURLプレフィックスを使用することを考慮してもよいでしょう。これは、上記を少し修正することで可能です。
register_blueprint
の呼び出しを少し修正することで可能です。
app.register_blueprint(account_api, url_prefix='/accounts')
さらに詳しいドキュメントをご覧になりたい方は 公式ドキュメント .
関連
-
[解決済み] リストを均等な大きさの塊に分割するには?
-
[解決済み] Pythonが解釈される場合、.pycファイルとは何ですか?
-
[解決済み] pandasを使った "大量データ "ワークフロー【終了しました
-
[解決済み] 文字列を複数の単語境界のデリミタで単語に分割する
-
[解決済み] Flaskで静的ファイルを提供する方法
-
[解決済み] PythonでUnicode(UTF-8)のファイル読み書きをする。
-
[解決済み】コード変更時のPython Flaskアプリの自動再読み込み
-
[解決済み] Jupyter (IPython)ノートブックのセッションをpickleして保存する方法
-
[解決済み] Pythonでランダムなファイル名を生成する最良の方法
-
[解決済み] Pythonでリストが空かどうかをチェックする方法は?重複
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Djangoで2つの日付の間を選択する
-
[解決済み] Spyderを仮想環境で動作させるには?
-
[解決済み] タプルのリストを複数のリストに変換するには?
-
[解決済み] スペースがないテキストを単語のリストに分割する方法
-
[解決済み] 範囲指定された浮動小数点数のランダムな配列を生成します。
-
[解決済み] あるオブジェクトが数であるかどうかを確認する、最もパイソン的な方法は何でしょうか?
-
[解決済み] Pandasを使って、既存のExcelファイルに新しいシートを保存する方法は?
-
[解決済み] 単純な文字列からtimedeltaオブジェクトを作成する方法
-
[解決済み] 認証プラグイン 'caching_sha2_password' はサポートされていません。
-
[解決済み] Alembicアップグレードスクリプトでインサートやアップデートを実行するにはどうすればよいですか?