如何访问查询参数或Flask路由中的查询字符串?这在Flask文档中并不明显。

下面的示例路由/数据说明了我想要访问该数据的上下文。如果有人请求example.com/data?abc=123这样的东西,我想访问字符串?abc=123,或者能够检索像abc这样的参数值。

@app.route("/data")
def data():
    # query_string = ???
    return render_template("data.html")

当前回答

我们可以通过使用request.query_string来做到这一点。

例子:

让我们考虑view.py

from my_script import get_url_params

@app.route('/web_url/', methods=('get', 'post'))
def get_url_params_index():
    return Response(get_url_params())

您还可以使用Flask Blueprints - https://flask.palletsprojects.com/en/1.1.x/blueprints/使其更加模块化

让我们考虑将名字作为查询字符串的一部分传递 / web_url / ?first_name =约翰

## here is my_script.py

## import required flask packages
from flask import request
def get_url_params():
    ## you might further need to format the URL params through escape.    
    firstName = request.args.get('first_name') 
    return firstName
    

正如你所看到的,这只是一个小例子-你可以获取多个值+格式化这些并使用它或将其传递到模板文件。

其他回答

如果请求是GET,我们传递一些查询参数,

fro`enter code here`m flask import request
@app.route('/')
@app.route('/data')
def data():
   if request.method == 'GET':
      # Get the parameters by key
      arg1 = request.args.get('arg1')
      arg2 = request.args.get('arg2')
      # Generate the query string
      query_string="?arg1={0}&arg2={1}".format(arg1, arg2)
      return render_template("data.html", query_string=query_string)

完整的URL可作为请求。Url,查询字符串可作为request.query_string.decode()。

这里有一个例子:

from flask import request

@app.route('/adhoc_test/')
def adhoc_test():

    return request.query_string

要访问查询字符串中传递的单个已知参数,可以使用request.args.get('param')。据我所知,这是“正确”的做法。

ETA:在进一步讨论之前,您应该问问自己为什么需要查询字符串。我从来没有拉入原始字符串- Flask有以抽象方式访问它的机制。你应该使用它们,除非你有一个令人信服的理由不这样做。

from flask import request

@app.route('/data')
def data():
    # here we want to get the value of user (i.e. ?user=some-value)
    user = request.args.get('user')

这可以使用request.args.get()来完成。 例如,如果查询字符串具有字段日期,则可以使用

date = request.args.get('date')

别忘了在从烧瓶进口的清单上加上“请求”, 即。

from flask import request

对查询字符串尝试这样做:

from flask import Flask, request

app = Flask(__name__)

@app.route('/parameters', methods=['GET'])
def query_strings():

    args1 = request.args['args1']
    args2 = request.args['args2']
    args3 = request.args['args3']

    return '''<h1>The Query String are...{}:{}:{}</h1>''' .format(args1,args2,args3)


if __name__ == '__main__':

    app.run(debug=True)

输出: