我正在开发 Flask 项目,并使用 marshmallow 来验证用户输入。
下面是一个代码片段:
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
部分,代码完美运行。当我按原样运行它时,出现以下错误:
内置值错误
ValueError:需要解包的值太多(预期为 2)
回溯(最近一次调用最后一次)
文件
“/home/..project-details.../venv3/lib/python3.6/site-packages/flask/app.py”,
2000 号线,在call
错误=无
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
是一个字典。
有任何想法吗??
我建议您检查您的依赖版本。
根据棉花糖 API 参考 http://marshmallow.readthedocs.io/en/latest/api_reference.html#schema,schema.load 返回:
在版本 3.0.0b7 中更改:此方法返回反序列化的数据而不是 (data, error) 双元组。如果传递无效数据,则会引发 ValidationError。
我怀疑 python 正在尝试将 dict (作为单个对象返回)解包为两个变量。引发异常是因为没有任何内容可以打包到“errors”变量中。下面重现了该错误:
d = dict()
d['test'] = 10101
a, b = d
print("%s : %s" % (a, b))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)