首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用flask_restx RequestParser从查询参数中获取列表列表

使用flask_restx RequestParser从查询参数中获取列表列表
EN

Stack Overflow用户
提问于 2020-07-02 21:20:29
回答 1查看 1.8K关注 0票数 0

我正在使用Flask和Flask-RESTX模块创建Python服务器。例如,我想为以下URL定义路由:

代码语言:javascript
复制
/users?sort=age,asc&sort=name,desc

因此,当我读取sort查询参数时,我会得到一组对,其中每一对都是(property, order),而order是ascdesc。我有以下代码:

代码语言:javascript
复制
from flask_restx import Resource
from flask import request
from flask_restx import reqparse

parser = reqparse.RequestParser()
parser.add_argument("sort", type=str)


@api.route("/users")
class Users(Resource):

    @api.marshal_list_with(...)
    @api.expect(parser)
    def get(self):
        print(request.args.getlist("sort"))

代码打印['age,asc', 'name,desc']很好,但是我必须用逗号手动拆分值,并检查每一项中是否只有2个值(例如ageasc)。

有没有更好的方法来处理这件事?

EN

回答 1

Stack Overflow用户

发布于 2020-09-04 22:15:44

为RequestParser添加带有value:'split'action参数,以获得拆分后的值列表。

并从已解析的参数字典中获取值。

你的例子给出了我的评论:

代码语言:javascript
复制
from flask_restx import Resource
from flask import request
from flask_restx import reqparse

parser = reqparse.RequestParser()
parser.add_argument("sort", type=str, action="split")


@api.route("/users")
class Users(Resource):

    @api.marshal_list_with(...)
    @api.expect(parser)
    def get(self):
        print(parser.parse_args()["sort"])

结果应该如下所示:

代码语言:javascript
复制
[['age', 'asc'], ['name', 'desc']]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62697322

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档