64

app.routeURL 呼び出しに複数のパラメーターがある場合、フラスコを記述する方法は?

AJax から呼び出している URL は次のとおりです。

http://0.0.0.0:8888/createcm?summary=VVV&change=Feauure

私はこのように自分のフラスコを書こうとしていましたapp.route:

@app.route('/test/<summary,change>', methods=['GET']

しかし、これは機能していません。誰かが私に言及する方法を提案できますapp.routeか?

4

8 に答える 8

85

実際にクエリパラメーターを使用したい場合は、他の回答に正しい解決策があります。何かのようなもの:

@app.route('/createcm')
def createcm():
   summary  = request.args.get('summary', None)
   change  = request.args.get('change', None)

いくつかのメモ。GET リクエストのみをサポートする必要がある場合は、ルート デコレータにメソッドを含める必要はありません。

クエリ パラメータについて説明します。「?」以外はすべて あなたの例ではクエリパラメータと呼ばれています。Flask はこれらのクエリ パラメータを URL から取り出し、ImmutableDict に配置します。request.argsキー、つまり、request.args['summary']私や他のコメンターが言及した get メソッドを使用してアクセスできます。これにより、存在しない場合にデフォルト値 (None など) を指定できるようになります。クエリ パラメータはオプションであることが多いため、これは一般的なクエリ パラメータです。

今、あなたの例でやろうとしていたように見える別のオプションがあり、それはPath Paramを使用することです。これは次のようになります。

@app.route('/createcm/<summary>/<change>')
def createcm(summary=None, change=None):
    ...

ここの URL は次のようになります: http://0.0.0.0:8888/createcm/VVV/Feauure

VVV と Feauure が変数として関数に渡されます。

それが役立つことを願っています。

于 2016-12-28T21:21:22.240 に答える
26

これを試すことができます:

カールリクエスト

curl -i "localhost:5000/api/foo?a=hello&b=world"  

フラスコサーバー

from flask import Flask, request

app = Flask(__name__)


@app.route('/api/foo/', methods=['GET'])
def foo():
    bar = request.args.to_dict()
    print bar
    return 'success', 200

if __name__ == '__main__':   
    app.run(debug=True)

コンソール出力

{'a': u'hello', 'b': u'world'}

PS curl オプションでダブル クォーテーション (" ") を省略しないでください。Linux では "&" として機能しません。

于 2016-08-17T03:39:47.877 に答える
24

ルートは、メソッドに直接渡されるクエリ文字列と一致しません。

from flask import request

@app.route('/createcm', methods=['GET'])
def foo():
   print request.args.get('summary')
   print request.args.get('change')
于 2013-03-03T05:20:22.117 に答える
7
@app.route('/createcm', methods=['GET'])
def foo():
    print request.args.get('summary')
    print request.args.get('change')
于 2014-01-20T05:20:38.450 に答える
4

URL パラメータと URL 自体を混同しています。

request.args.get("summary")と を使用して、URL パラメータにアクセスできますrequest.args.get("change")

于 2013-03-03T05:19:47.387 に答える