209

私のフラスコアプリケーションは現在、複数のルートとルートが定義された単一のtest.pyファイルで構成されています。で処理されなかったルートを含むファイルをmain()作成する方法はありますか?test2.pytest.py

@app.route('/somepath')
def somehandler():
    # Handler code here

ルートが多すぎることを懸念しており、同じファイルの一部であるかのようにルートtest.pyを取得する を実行できるようにしたいと考えています。これを機能させるには、どのような変更を加えたり、含めたりする必要がありますか?python test.pytest.pytest.pytest2.py

4

6 に答える 6

199

通常の Python パッケージ構造を使用して、アプリを複数のモジュールに分割できます。Flask のドキュメントを参照してください。

でも、

Flask は、アプリケーション コンポーネントを作成し、アプリケーション内またはアプリケーション間で共通のパターンをサポートするために、設計図の概念を使用します。

別のファイルでブループリントとしてアプリのサブコンポーネントを作成できます。

simple_page = Blueprint('simple_page', __name__, template_folder='templates')
@simple_page.route('/<page>')
def show(page):
    # stuff

そして、それを主要部分で使用します。

from yourapplication.simple_page import simple_page

app = Flask(__name__)
app.register_blueprint(simple_page)

ブループリントは、特定のリソース (テンプレートまたは静的ファイル) をバンドルすることもできます。詳細については、 Flask のドキュメントを参照してください。

于 2012-08-16T20:09:37.557 に答える
17

GitHub でフラスコ空をお勧めしたいと思います。

ブループリント、複数のビュー、および拡張機能を理解する簡単な方法を提供します。

于 2012-08-16T20:52:33.263 に答える
6

アプリを設計図に分割することは素晴らしいアイデアです。ただし、これでは不十分で、ブループリント自体を複数の py ファイルに分割したい場合は、通常の Python モジュール インポート システムを使用して、他のファイルからインポートされたすべてのルートをループすることもできます。 .

これを行うためのコードで Gist を作成しました。

https://gist.github.com/Jaza/61f879f577bc9d06029e

私が知る限り、これが現時点でブループリントを分割する唯一の実行可能な方法です。Flask で「サブ ブループリント」を作成することはできませんが、これについて多くの議論がなされている未解決の問題があります。

https://github.com/mitsuhiko/flask/issues/593

また、たとえそれが可能だったとしても (そしておそらく、その課題スレッドのスニペットの一部を使用して実行可能です)、サブ ブループリントはユース ケースに対して制限が厳しすぎる可能性があります。サブモジュールが同じ URL サブプレフィックスを持つようにします。

于 2015-02-06T04:08:02.433 に答える