WTForms 以 unicode 格式从表单中引入数据

Posted

技术标签:

【中文标题】WTForms 以 unicode 格式从表单中引入数据【英文标题】:WTForms bringing in data from form in unicode formating 【发布时间】:2015-11-24 10:37:27 【问题描述】:

由于某种原因,WTForms 以 unicode 格式而不是正常格式获取信息。过去的代码可以正常工作,但重新启动时它就坏了。

flask 视图中的错误:

类型错误

TypeError: 'unicode' 对象不可调用

控制台报错:

Traceback(最近一次调用最后一次):

文件“/Library/Python/2.7/site-packages/flask/app.py”,第 1836 行,在 call

return self.wsgi_app(environ, start_response)

文件“/Library/Python/2.7/site-packages/flask/app.py”,第 1820 行,在 wsgi_app 中

response = self.make_response(self.handle_exception(e))

文件“/Library/Python/2.7/site-packages/flask/app.py”,第 1403 行,在 处理异常

reraise(exc_type, exc_value, tb)

文件“/Library/Python/2.7/site-packages/flask/app.py”,第 1817 行,在 wsgi_app 中

响应 = self.full_dispatch_request()

文件“/Library/Python/2.7/site-packages/flask/app.py”,第 1477 行,在 full_dispatch_request 中

rv = self.handle_user_exception(e)

文件“/Library/Python/2.7/site-packages/flask/app.py”,第 1381 行,在 handle_user_exception 中

reraise(exc_type, exc_value, tb)

文件“/Library/Python/2.7/site-packages/flask/app.py”,第 1475 行,在 full_dispatch_request 中

rv = self.dispatch_request()

文件“/Library/Python/2.7/site-packages/flask/app.py”,第 1461 行,在 dispatch_request 中

返回 self.view_functionsrule.endpoint

文件“/Users/marcellobachechi/Desktop/RMP/server.py”,第 72 行,打招呼

用户 = form.song.data()

TypeError: 'unicode' 对象不可调用

代码为:

class PickASong(Form):
    song = TextField(u'Song title', validators=[DataRequired()])

form = PickASong(csrf_enabled=False)

if form.validate_on_submit():
 user = form.song.data()

HTML

<form action="" method="post" name="login">

      <p>
           form.song(size=20) 

      <input type="submit" value="Search!"></p></p>

      form.song(size=20) 
</form>

【问题讨论】:

【参考方案1】:

删除form.song.data之后的括号,因为它已经是一个Unicode字符串。

【讨论】:

太棒了。我已经坚持了 2 天了!

以上是关于WTForms 以 unicode 格式从表单中引入数据的主要内容,如果未能解决你的问题,请参考以下文章

Flask之WTForms验证

WTForms 得到错误

WTForms:安装“email_validator”以获得电子邮件验证支持

wtforms-表单生成及验证

使用 WTForms 进行表单验证的例子

使用WTForms Flask解析日期 - Python