如何访问 Flask 路由中的查询参数或查询字符串?Flask 文档中没有明确说明。
下面的示例路由/data说明了我想要访问该数据的环境。如果有人请求类似的东西example.com/data?abc=123,我希望访问字符串?abc=123或能够检索类似参数的值abc。
/data
example.com/data?abc=123
?abc=123
abc
@app.route("/data") def data(): # query_string = ??? return render_template("data.html")
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')
在 Flask 中,您可以从请求对象访问查询参数。该request对象提供了一种访问查询参数、表单数据等的方法。要检索查询参数或查询字符串,请使用request.args查询参数和request.query_string原始查询字符串。
request
request.args
request.query_string
下面介绍了如何在 Flask 路由中访问查询参数和查询字符串:
查询参数是通过request.args属性访问的,该属性是MultiDict包含所有查询参数的(本质上是一个类似字典的对象)。
MultiDict
访问特定查询参数的方法如下:
from flask import Flask, request, render_template app = Flask(__name__) @app.route("/data") def data(): # Get a specific query parameter, e.g., 'abc' abc_value = request.args.get('abc') # If you want to get all query parameters as a dictionary all_params = request.args.to_dict() return render_template("data.html", abc_value=abc_value, all_params=all_params)
request.args.get('abc')
None
request.args.to_dict()
如果您需要原始查询字符串(包括),?则可以使用request.query_string。这将为您提供字节字符串形式的查询字符串。
?
访问方法如下:
from flask import Flask, request, render_template app = Flask(__name__) @app.route("/data") def data(): # Get the raw query string (including '?') raw_query_string = request.query_string.decode('utf-8') return render_template("data.html", raw_query_string=raw_query_string)
.decode('utf-8')
request.args.get('param_name')
下面是一个 Flask 应用程序的完整示例,演示了这两种方法:
from flask import Flask, request, render_template app = Flask(__name__) @app.route("/data") def data(): abc_value = request.args.get('abc') all_params = request.args.to_dict() raw_query_string = request.query_string.decode('utf-8') return render_template("data.html", abc_value=abc_value, all_params=all_params, raw_query_string=raw_query_string)
在此示例中,您可以data.html根据需要使用它来显示查询参数和原始查询字符串。
data.html