关于如何获取查询字符串的烧瓶文档中并不明显。我是新人,看着文档,找不到!
所以
@app.route('/')
@app.route('/data')
def data():
query_string=??????
return render_template("data.html")
答案 0 :(得分:611)
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')
答案 1 :(得分:199)
完整网址以request.url
的形式提供,查询字符串以request.query_string
的形式提供。
以下是一个例子:
from flask import request
@app.route('/adhoc_test/')
def adhoc_test():
return request.query_string
要访问查询字符串中传递的单个已知参数,您可以使用request.args.get('param')
。据我所知,这是“正确”的做法。
ETA:在你走得更远之前,你应该问问自己为什么要查询字符串。我从来没有必要拉入原始字符串 - Flask具有以抽象方式访问它的机制。你应该使用那些,除非你有令人信服的理由不这样做。
答案 2 :(得分:13)
我们可以使用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蓝图 - http://flask.pocoo.org/docs/0.10/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
如您所见,这只是一个小例子 - 您可以获取多个值+格式化它们并使用它或将其传递到模板文件。
答案 3 :(得分:12)
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/
答案 4 :(得分:4)
可以从烧瓶请求对象中检索的每种形式的查询字符串,如O'Reilly Flask Web Devleopment中所述:
从O'Reilly Flask Web Development开始,如Manan Gouhari先前所述,首先您需要导入请求:
from flask import request
request
是Flask公开的对象,它是一个名为request
的上下文变量(您猜对了)。顾名思义,它包含 all 客户端在HTTP请求中包含的信息。该对象具有许多可以分别检索和调用的属性和方法。
您有很多request
属性,其中包含可供选择的查询字符串。在这里,我将列出以任何方式包含查询字符串的每个属性,以及O'Reilly对该书的描述。
首先有args
,它是“字典,其中所有参数都在URL的查询字符串中传递。”因此,如果您希望将查询字符串解析为字典,则可以执行以下操作:
from flask import request
@app.route('/'):
queryStringDict = request.args
(正如其他人指出的,您也可以使用.get('<arg_name>')
从字典中获取特定值)
然后,有一个form
属性,该属性不不包含查询字符串,但包含在 包含的另一个属性的一部分中查询字符串,我将立即列出。不过,首先,form
是“包含与请求一起提交的所有表单字段的字典”。我这样说是:烧瓶请求对象中还有一个名为values
的字典属性。 values
是“结合了form
和args
中的值的字典。”检索将类似于以下内容:
from flask import request
@app.route('/'):
formFieldsAndQueryStringDict = request.values
(再次使用.get('<arg_name>')
从词典中获取特定项目)
另一个选项是query_string
,它是“ URL的查询字符串部分,作为原始二进制值”。例子:
from flask import request
@app.route('/'):
queryStringRaw = request.query_string
然后,另外一个奖励是full_path
,它是“ URL的路径和查询字符串部分”。通过ejemplo:
from flask import request
@app.route('/'):
pathWithQueryString = request.full_path
最后,url
,“客户端请求的完整URL”(包括查询字符串):
from flask import request
@app.route('/'):
pathWithQueryString = request.url
快乐黑客:)
答案 5 :(得分:1)
我来这里是在寻找查询字符串,而不是从查询字符串中获取值。
request.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)
输出:
参考:
答案 6 :(得分:1)
如果请求为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)
答案 7 :(得分:1)
下面的实现对我有用。
from flask import request
def getVerificationStatus():
try:
requestId=int(request.args.get('requestId'))
print(requestId)
status= verificationStepRepository.getVerificationStatus(requestId)
return tb.responsify(200, "success", status)
except Exception as e:
return errorHandler.dispatchInternalServerError(str(e))
答案 8 :(得分:0)
可以使用request.args.get()
完成此操作。
例如,如果您的查询字符串具有字段date
,则可以使用
date = request.args.get('date')
别忘了在烧瓶的导入列表中添加“ request
”,
即
from flask import request
答案 9 :(得分:0)
尝试像这样查询字符串:
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)