17

複数のドメインを処理できるFlaskで構造を実装したいと思います。したがって、ブラウザに「http://domain1.com/show/1」と入力すると、実際には次のようなルーティングで機能が実行されます。

@app.route('<string:domain>/show/<int:id>')
def show(domain = '', id = ''):
    return 'Domain is ' + domain + ', ID is ' + str(id)

そしてそれは非常に重要です、クライアントのブラウザのURLはまだ「http://domain1.com/show/1」でなければなりません。そして、私が知っているようにredirect、Flaskで使用すると、URLが変更されます。そのような構造をどのように整理する必要がありますか?ありがとう!

4

2 に答える 2

27

オブジェクトにはrequestすでにurl_rootパラメータがあります。Hostまたは、ヘッダーを使用できます。

print request.url_root  # prints "http://domain1.com/"
print request.headers['Host']  # prints "domain1.com"

アプリケーション内でリダイレクトする必要がある場合url_rootは、より深いパス(たとえば、から始まる)にルートされている場合でも、WSGIアプリケーションのフルパスが含まれるため、確認する属性ですhttp://domain1.com/path/to/flaskapp

request.url_for()FlaskにURLを生成させるために使用する方がおそらく良いでしょう。それはurl_root考慮に入れられます。URL構築のドキュメントを参照してください。

于 2013-02-12T18:54:11.480 に答える
2

インポートしたコードは次のようになります。

import flask

print flask.request.url_root  # prints "http://domain1.com/"
print flask.request.headers['Host']  # prints "domain1.com"
于 2018-01-31T23:53:26.110 に答える