如何访问查询参数或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")
当前回答
这个准则对我很有效:
from flask import Flask, request
app = Flask(__name__)
@app.route('/')
def search():
query = request.args
for key,value in query.items():
print(key,value)
return "Hello World"
if __name__ == '__main__':
app.run(debug=True)
其他回答
我更喜欢
user = request.args['user'] if 'user' in request.args else 'guest'
over
user = request.args.get('user')
通过这种方式,您可以首先检查url实际上包含查询字符串
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')
这个准则对我很有效:
from flask import Flask, request
app = Flask(__name__)
@app.route('/')
def search():
query = request.args
for key,value in query.items():
print(key,value)
return "Hello World"
if __name__ == '__main__':
app.run(debug=True)
对查询字符串尝试这样做:
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)
输出:
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/