我有一个Flask视图,它使用request.args
从请求中获取一些查询参数。我想将其称为请求之外的函数,因此request.args
无法使用。如何修改视图功能以独立工作?
http://localhost:5000/version/perms?arg1=value1&arg2=value2
@app.route(version + 'perms', methods=['GET'])
def get_perms():
arg1 = request.args.get('arg1')
arg2 = request.args.get('arg2')
我想将此函数用作基本的Python函数,并在调用中传递参数。
def get_perm(arg1, arg2):
答案 0 :(得分:2)
支持将URL部分放入python变量,但是AFAIK不能使用查询参数,你需要使用request.args。
@app.route('/post/<int:post_id>')
def show_post(post_id):
# show the post with the given id, the id is an integer
return 'Post %d' % post_id
如果您要提取的内容不是查询参数(即它不在URL中的?之后),那么这样的东西就可以工作(直接从烧瓶文档中复制 - http://flask.pocoo.org/docs/0.11/quickstart/#routing)
from flask import request
@app.route(version + 'perms', methods=['GET'])
def get_perm_ws():
arg1 = request.args.get('arg1')
arg2 = request.args.get('arg2')
return get_perm(arg1, arg2)
def get_perm(arg1, arg2):
pass # your implementation here
我不确定你的意思是“没有网络部分的电话” - 你想从其他python代码调用它,例如从批量工作?我想我会做这样的事情:
@app.route(version + 'perms', methods=['GET'])
def get_perm(params = None):
if params == None:
params = request.params
# your code here
另一种替代方法(如果您不能将请求参数放在URL中的其他位置)将是具有默认值的函数参数。请注意,你真的应该在这里使用不可变的东西,否则你会遇到麻烦(可以修改一个可变的默认参数,从那时起修改后的值将被用作默认值)。
{{1}}