wtform 的 DateField 怎么显示中文提示

class RegisterForm(Form):
    name = simple.StringField(
            label='用户名',
            validators=[
                validators.DataRequired(message='用户名不能为空')
            ],
            widget=widgets.TextInput(),
            render_kw={'class': 'form-control'},
    )

    birthday = core.DateField(label='出生日期', format='%Y-%m-%d')   

请教:

渲染后页面后
假如birthday填写的不是时间格式的话,提示的是“Not a valid date value”
这个怎么改成自定制中文的呢??

阅读 3.7k
1 个回答

若要完全改写错误信息,可继承 DateField 并重写 process_formdate() 方法,如

# -*- coding: utf-8 -*-
from wtforms import Form, DateField
from webob.multidict import MultiDict


class DemoDateField(DateField):
    def process_formdata(self, valuelist):
        try:
            DateField.process_formdata(self, valuelist)
        except ValueError:
            raise ValueError(u'自定义错误信息')


class DemoForm(Form):
    day = DemoDateField('day')


form = DemoForm()
form.process(MultiDict(dict(day='abc')))
assert form.day.process_errors == [u'自定义错误信息']

若只是翻译英文错误信息,应修改 locale 设置,或继承 DateField 并重写 gettext() 方法。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题