【问题标题】:Using a dict as RequestParser validation arguments使用 dict 作为 RequestParser 验证参数
【发布时间】:2020-02-23 19:55:24
【问题描述】:

我想知道是否有办法将 dict 传递给 RequestParser .add_argument() 命令的参数

它通常是这样工作的

    my_parser = reqparse.RequestParser()
    my_parser.add_argument('my_field', type=dict, help='my_field must be a dict', required=True)

出于代码可重用性的目的,我想像这样使用它

    my_arguments = {type=dict, help='my_field must be a dict', required=True}

然后将这些作为参数传递给 .add_argument 函数,使用:

    my_parser.add_argument('my_field', my_arguments)

我在尝试使用列表理解时遇到了困难,

    my_parser.add_arguments('my_field', list(key=value for (key, value) in parser_arguments.items()))

此时我意识到我可能无法使用 dict,可能需要执行 getattr() 并且显然在这方面投入了太多时间。对我来说这似乎可行且优雅,但无论如何我都找不到解决方案,感谢您对此提出任何启发性的想法。

编辑:我不能使用直观的

    my_parser.add_argument('my_field', my_arguments)

因为 dict 将被添加到解析器参数的“默认”字段中,而实际字段(“类型”、“帮助”和“必需”)不受影响。

【问题讨论】:

标签: python flask-restful


【解决方案1】:

You can use kwargs unpacking:

my_arguments = {'type':dict, 'help':'my_field must be a dict', 'required':True}
my_parser.add_argument('my_field', **my_dict)

相当于

my_parser.add_argument('my_field', type=dict, help='my_field must be a dict', required=True)

【讨论】:

  • 我发誓我试过了,当我这样做时,我的字典本身一定有错误。这显然非常有效。
猜你喜欢
  • 2021-02-23
  • 2013-10-14
  • 2017-11-29
  • 1970-01-01
  • 1970-01-01
  • 2021-06-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多