【发布时间】:2014-11-25 07:16:11
【问题描述】:
我正在使用https://pythonhosted.org/Flask-Babel/ 扩展进行本地化。
基本表单类
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from app import app
from flask.ext.wtf import Form
class BaseForm(Form):
@property
def error_list(self):
_errors = []
for fieldName, errorMessages in self.errors.iteritems():
for err in errorMessages:
_errors.append(err)
return _errors
我的表单类
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from flask import g
from wtforms import StringField, TextField, PasswordField # BooleanField
import wtforms.validators as validators
from flask.ext.babel import lazy_gettext as _
from flask.ext.babel import npgettext as _n
from app.base_forms import *
class PostForm(BaseForm):
post_title = StringField(_("Post Title"), [validators.Required(message=_("Post title is required")) ])
post_content = StringField(_("Post Content"), [ validators.Required(message=_("Post content is required"))])
我的看法
...
viewJsonData["error_list"] = form.error_list
return jsonify(**viewJsonData)
它会抛出这个错误“TypeError: lu'Post content is required' is not JSON serializable”。
当我将本地化从 _("Post Title") 删除到 "Post Title" 时,它可以工作,但是当我使用 babel 时它不起作用
我认为这是关于 unicode 的。因为我做了这个更改 _("Post Title").encode("utf-8") 它有效。但是这个解决方案是无效的。我该如何解决这个问题。
【问题讨论】: