使用Flask视图,该视图需要在请求之外的查询args

时间:2016-07-04 09:51:55

标签: python flask

我有一个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):

1 个答案:

答案 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}}