如何访问查询参数或Flask路由中的查询字符串?这在Flask文档中并不明显。
下面的示例路由/数据说明了我想要访问该数据的上下文。如果有人请求example.com/data?abc=123这样的东西,我想访问字符串?abc=123,或者能够检索像abc这样的参数值。
@app.route("/data")
def data():
# query_string = ???
return render_template("data.html")
如何访问查询参数或Flask路由中的查询字符串?这在Flask文档中并不明显。
下面的示例路由/数据说明了我想要访问该数据的上下文。如果有人请求example.com/data?abc=123这样的东西,我想访问字符串?abc=123,或者能够检索像abc这样的参数值。
@app.route("/data")
def data():
# query_string = ???
return render_template("data.html")
当前回答
这可以使用request.args.get()来完成。 例如,如果查询字符串具有字段日期,则可以使用
date = request.args.get('date')
别忘了在从烧瓶进口的清单上加上“请求”, 即。
from flask import request
其他回答
Werkzeug/Flask已经为您解析了所有内容。不需要再用urlparse做同样的工作:
from flask import request
@app.route('/')
@app.route('/data')
def data():
query_string = request.query_string ## There is it
return render_template("data.html")
请求和响应对象的完整文档在Werkzeug中:http://werkzeug.pocoo.org/docs/wrappers/
通常我们只是想将整个查询字符串映射到适当的python数据结构中,然后从那里获取它。合适的结构是多字典,因为关键字可以重复,例如我们需要处理a = 12123a =456&B=789。多字典是一个二元组列表,其中每个二元组的第一项是键,第二项是值列表,所以上面的是[('A',['123','456']),('B',['789'])]。所有这一切都是由
qstr = request.args.lists() # A generator for the multi-dict
qstr = list(qstr) # To get the actual multi-dict
如果你想要的只是一个字典,其中第一次出现重复的关键字被使用,你可以直接去
qstr = request.args.to_dict()
我们可以通过使用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
正如你所看到的,这只是一个小例子-你可以获取多个值+格式化这些并使用它或将其传递到模板文件。
我来这里是寻找查询字符串,而不是如何从查询字符串中获取值。
请求。query_string返回URL参数为原始字节字符串(参考1)。
使用request.query_string的示例:
from flask import Flask, request
app = Flask(__name__)
@app.route('/data', methods=['GET'])
def get_query_string():
return request.query_string
if __name__ == '__main__':
app.run(debug=True)
输出:
引用:
query_string的官方API文档
这可以使用request.args.get()来完成。 例如,如果查询字符串具有字段日期,则可以使用
date = request.args.get('date')
别忘了在从烧瓶进口的清单上加上“请求”, 即。
from flask import request