Python (烧瓶/棉花糖)ValueError:要解压缩的值太多(预期为 2)



我正在做一个Flask项目,我正在使用棉花糖来验证用户输入。 下面是一个代码片段:

def create_user():
in_data = request.get_json()
data, errors = Userschema.load(in_data)
if errors:
return (errors), 400
fname = data.get('fname')
lname = data.get('lname')
email = data.get('email')
password = data.get('password')
cpass = data.get('cpass')

当我消除errors部分时,代码运行良好。当我按原样运行它时,出现以下错误:

内置。值错误

值错误:要解压缩的值太多(预期为 2(

回溯(最近一次调用(

文件 "/家/..project-details.../venv3/lib/python3.6/site-packages/flask/app.py", 线路 2000,在通话

错误 = 无

ctx.auto_pop(错误(

def __call__(self, environ, start_response):
"""Shortcut for :attr:`wsgi_app`."""
return self.wsgi_app(environ, start_response)

def __repr__(self):
return '<%s %r>' % (
self.__class__.__name__,
self.name,

注意:变量in_data是一个字典。 任何想法??

我建议您检查您的依赖项版本。 根据 Marshmallow API 参考,schema.load 返回:

在 3.0.0b7 版更改: 此方法返回反序列化的数据,而不是(数据、错误(重复。如果传递了无效数据,则会引发验证错误。

我怀疑 python 正试图将字典(作为单个对象返回(解压缩为两个变量。引发异常是因为没有任何东西可以打包到"错误"变量中。下面重现了该错误:

d = dict()
d['test'] = 10101
a, b = d
print("%s : %s" % (a, b))

根据其最新版本(3.17.1(的文档,处理验证错误的方式如下:

from marshmallow import ValidationError
try:
result = UserSchema().load({"name": "John", "email": "foo"})
except ValidationError as err:
print(err.messages)  # => {"email": ['"foo" is not a valid email address.']}
print(err.valid_data)  # => {"name": "John"}

相关内容

  • 没有找到相关文章

最新更新