从烧瓶文档中关于如何获取查询字符串的知识并不明显。我是新手,看了看文档,找不到!
所以
@app.route('/')
@app.route('/data')
def data():
query_string=??????
return render_template("data.html")
从烧瓶文档中关于如何获取查询字符串的知识并不明显。我是新手,看了看文档,找不到!
所以
@app.route('/')
@app.route('/data')
def data():
query_string=??????
return render_template("data.html")
Answers:
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')
完整URL可用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具有以抽象方式访问它的机制。除非您有令人信服的理由不使用,否则应使用它们。
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/
我们可以使用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 = john的一部分进行传递
## 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
如您所见,这只是一个小例子-您可以获取多个值+为其赋值,然后使用它或将其传递到模板文件中。
我来这里是在寻找查询字符串,而不是如何从查询字符串获取值。
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)
输出:
参考文献:
像这样尝试查询字符串:
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)
如O'Reilly Flask Web开发中所述,可以从烧瓶请求对象中检索每种形式的查询字符串:
从O'Reilly Flask Web开发,如Manan Gouhari先前所述,首先,您需要导入请求:
from flask import request
request
是Flask公开的对象,它是一个名为(您猜对了)的上下文变量request
。顾名思义,它包含客户端包含在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
快乐黑客:)
可以使用来完成request.args.get()
。例如,如果您的查询字符串包含字段date
,则可以使用进行访问
date = request.args.get('date')
别忘了request
在烧瓶的导入列表中添加“ ”,即
from flask import request
request.args.get()
;对旧问题的新答案应包含以前未提到的内容。
如果请求为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)