首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >webargs的字典与Marshmallow数据处理模式

webargs的字典与Marshmallow数据处理模式
EN

Stack Overflow用户
提问于 2021-03-03 08:24:15
回答 1查看 457关注 0票数 0

webargs模块允许将参数模式描述为纯字典或棉花糖数据集模式:

代码语言:javascript
复制
# Dictionary variant
@use_args({'field1': field.Int(required=True, validate=validate.Range(min=1))}, location='json')
def post(args: Dict[str, any]):
    controller.post(args)

# Marshmallow dataclass schema
@dataclass()
class Arg:
    field1: int = field(metadata=dict(required=True, validate=validate.Range(min=1)))

@use_args(Arg.Schema(), location='json')
def post(arg: Arg):
    controller.post(arg)

第一个变体看起来更短更快,但是我们在IDE中失去了语法突出显示和类型检查(因为它是dict),它还会导致更长的调用,即args['field1']而不是arg.field1

您在大型项目中使用的变体是什么?当使用第一个或第二个变体时,是否有一些最佳实践?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-03 10:05:43

没有最佳做法。这是一个偏好的问题,真的。

有时,人们认为一个模式对于一个或两个查询args来说是太多的代码,而一个dict就足够了。

我喜欢在任何地方使用模式。我发现它更一致,它允许所有模式从基模式派生继承元参数。

我不使用棉花糖数据,只是纯棉花糖,所以我总是得到一个白痴。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66453201

复制
相关文章

相似问题

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