在Python蓝图路由中获取查询值

问题描述 投票:0回答:1

我正在使用“蓝图”开发Python Flask api,我想在一条路线上对结果进行分页。如果用户包括查询参数“ page =”,我想获取该值。我该怎么办?

在此示例代码中:

@api.route('/users', methods=['GET'])
def list_users():
    users = User.query.all()
    return jsonify(users=[i.serialize() for i in users])

我想添加一个if页面参数。谢谢!我是Flask的新手,今晚就可以尝试。

python flask
1个回答
0
投票
Flask的快速入门指南很好地介绍了路线here中的变量。例如,对于您的情况,您将执行以下操作:

@api.route('/users/<int:page>', methods=['GET']) def list_users(page): users = User.query.all() print(page) # the page argument contains the integer passed in the URL. return jsonify(users=[i.serialize() for i in users])

如果向/users/1端点发出请求,则上面将打印1。但是,如果您选择这种方法,则客户端将始终需要为页面提供一个值(即,除非您添加其他路由来处理该端点,否则对端点/user的请求将不起作用)。

另一方面,查询参数使您可以使用相同的路由将page参数设为可选。对于查询参数,您的客户端将使用查询格式(例如/users?page=1)进行请求。要使用查询参数,您可以如下设置代码:

from flask import request @api.route('/users', methods=['GET']) def list_users(): users = User.query.all() page = request.args.get('page', None) if page is None: # the page parameter was not given in the request, handle it accordingly else: # page parameter was in the request, handle it accordingly return jsonify(users=[i.serialize() for i in users])

© www.soinside.com 2019 - 2024. All rights reserved.