web-dev-qa-db-ja.com

FlaskリクエストのURLのさまざまな部分を取得するにはどうすればよいですか?

リクエストがlocalhost:5000またはfoo.herokuapp.comホストからのものかどうか、およびどのパスがリクエストされたかを検出したい。 Flaskリクエストに関するこの情報を取得するにはどうすればよいですか?

110
Dogukan Tufekci

いくつかの Requestフィールド でURLを調べることができます:

ユーザーが次のURLをリクエストします。

    http://www.example.com/myapplication/page.html?x=y

この場合、上記の属性の値は次のようになります。

    path             /page.html
    script_root      /myapplication
    base_url         http://www.example.com/myapplication/page.html
    url              http://www.example.com/myapplication/page.html?x=y
    url_root         http://www.example.com/myapplication/

適切な分割を使用して、ホスト部分を簡単に抽出できます。

194
icecrime

もう一つの例:

要求:

curl -XGET http://127.0.0.1:5000/alert/dingding/test?x=y

その後:

request.method:              GET
request.url:                 http://127.0.0.1:5000/alert/dingding/test?x=y
request.base_url:            http://127.0.0.1:5000/alert/dingding/test
request.url_charset:         utf-8
request.url_root:            http://127.0.0.1:5000/
str(request.url_rule):       /alert/dingding/test
request.Host_url:            http://127.0.0.1:5000/
request.Host:                127.0.0.1:5000
request.script_root:
request.path:                /alert/dingding/test
request.full_path:           /alert/dingding/test?x=y

request.args:                ImmutableMultiDict([('x', 'y')])
request.args.get('x'):       y
102
chason

試してみてください:

request.url 

Localhostでさえ、常に動作することを前提としています(実行しただけです)。

10
Ran