0

我从客户端发送 HTTP 请求。然后在服务器上我尝试验证一个 WTForm 表单。

from webob.multidict import MultiDict

from wtforms import Form, TextField, PasswordField, validators

class LoginForm(Form):
    email = TextField('Email', [validators.Required(), validators.Email()])
    password = PasswordField('Password', [validators.Required()])

以下命令在 RequestHandler 中执行:

self.request.body
>>> '{"username":"my_email@me.com", "password":"pass"}'

json.loads(self.request.body)
>>>  {"username":"my_email@me.com", "password":"pass"}

type(json.loads(self.request.body))

>>> type 'dict'

MultiDict(json.loads(self.request.body))

>>> MultiDict[(u'username', u'my_email@me.com'), (u'password':'******')])

LoginForm(MultiDict(json.loads(self.request.body))).data

>>> {'password': 'pass', 'email': u''}

从最后一个命令中,我希望看到{"username":"my_email@me.com", "password":"pass"}以后可以验证。但是,不知何故,实际数据“丢失”了。有任何想法吗?

4

1 回答 1

0

您的登录表单具有已命名的字段emailpassword但您正在向其传递字段usernamepassword.

改变一个或另一个以匹配,你应该很高兴。

于 2016-05-29T03:26:33.233 回答