我正在使用 webargs 从request.args
Marshmallow 中解析参数并将它们作为参数传递给 Flask 视图。我的客户使用逗号分隔的列表来表示一个键的多个值:
/queues/generate?queue_id=4&include_ids=1,2,3
为了解析这个,我使用 Marshmallow 的DelimitedList
字段。
from marshmallow import Schema, fields
from webargs import use_args
from webargs.fields import DelimitedList
class GenerationParamsSchema(Schema):
queue_id = fields.Integer(required=True)
include_ids = DelimitedList(fields.Integer(), required=False)
@queues.route('/generate_content', methods=['GET'])
@use_args(GenerationParamsSchema(strict=True))
def generate_content_count(generation_params):
...
但是,如果我使用 Flask's 生成 URL url_for
,它会为每个值生成重复的键:
url_for('queues.generate', queue_id=4, include_ids=[1, 2, 3])
/queues/generate?queue_id=4&include_ids=1&include_ids=2&include_ids=3
用DelimitedList
字段解析它只会捕获第一个值。更改为List
正确的字段会再次捕获值。所以要么我的 Flask URL 失败,要么我的客户端 URL 失败。
我无法更改客户端生成 URL 的方式,所以我想坚持使用DelimitedField
. 我怎样才能url_for
生成相同的样式?