私は2つのアプリケーションファクトリ関数を持っています.1つは "customer"アプリを作成し、もう1つは "admin"バックエンドアプリを作成します。両方のファクトリ関数は基本的にはhere - フラスコのアプリケーションを作成し、いくつかの拡張機能を登録してから、いくつかの青写真(url_prefixを付けて)を追加します。私は下からcreate_combined_app()
経由で2つのアプリケーションを一緒に接着します。 Flask-ScriptのManager
で登録した関数の戻り値です。DispatcherMiddlewareを使ったwsgi_app FlaskアプリのURL
def create_combined_app(config_name):
customer_app = create_customer_app(config_name)
admin_app = create_admin_app(config_name)
from werkzeug.wsgi import DispatcherMiddleware
customer_app.wsgi_app = DispatcherMiddleware(customer_app.wsgi_app, {
'/admin': admin_app
})
return customer_app
これが私の方法です。
私のアプリのすべてのGETルートを取得してロードすることを含むいくつかのテストを行いたいと思います。私はhereの例に従っていますが、というお客様のアプリのURLのみを表示し、の管理者バックエンドのURLは表示されません。
@main.route("/site-map")
def site_map():
from flask import current_app, jsonify
links = []
app = current_app
for rule in app.url_map.iter_rules():
if "GET" in rule.methods and has_no_empty_params(rule):
url = url_for(rule.endpoint, **(rule.defaults or {}))
links.append((url, rule.endpoint))
return jsonify(links)
私は、ブラウザからアクセスしようとすると、管理者のバックエンドは動作します - それはすべてのI /サイトマップを呼び出すとき、私は管理者のURLが表示されていないことを除いて、うまく動作します。
ありがとうございます! :)