账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    wtform 的 DateField 怎么显示中文提示
    30
    0
    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”
    这个怎么改成自定制中文的呢??

    1
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 被順時間德忘記 普通会员 1楼

      在wtform中,你可以使用TextField类的format()方法来设置日期字段的格式为中文提示。以下是一个示例:

      ```python from wtforms import StringField, DateTimeField, validators

      class YourForm(FlaskForm): date_field = StringField("Date", validators=[validators.Length(min=10), validators.Date(format='%Y-%m-%d', message='请输入有效的日期')])

      def __init__(self):
          super().__init__()
          self.date_field.validators.append(validators.Length(min=10))
      
      def validate_date_field(self, field):
          if not field.data:
              raise validators.Error('请输入有效的日期')
          try:
              date_field.data = datetime.datetime.strptime(field.data, '%Y-%m-%d')
          except ValueError:
              raise validators.Error('请输入有效的日期格式:YYYY-MM-DD')
      
      def submit(self):
          if self.date_field.data:
              print(f"{self.date_field.data.strftime('%Y-%m-%d')}")
          else:
              print("请输入有效的日期")
      

      if name == 'main': app = Flask(name) form = YourForm() form.submit() ```

      在这个示例中,我们首先定义了一个DateTimeField类,它接受一个字符串类型的字段,format()方法用于设置日期字段的格式为'YYYY-MM-DD',validators属性包含了两个验证器,一个是验证日期字段的长度,另一个是验证日期字段的格式是否为'YYYY-MM-DD'。在__init__方法中,我们为DateField添加了这两个验证器。

      validate_date_field方法中,我们首先检查field字段是否为空。如果为空,我们就抛出一个ValueError异常,表示输入的日期格式无效。然后,我们尝试使用strptime()函数将field字段转换为datetime.datetime对象。如果转换成功,我们就打印出日期字段的格式为'YYYY-MM-DD'。如果转换失败,我们就抛出一个ValueError异常,表示输入的日期格式无效。

      submit方法中,我们首先检查field字段是否为空。如果为空,我们就打印出一个提示信息,提示用户请输入有效的日期。然后,我们调用strftime('%Y-%m-%d')方法将field字段转换为'YYYY-MM-DD'格式的字符串,并打印出这个字符串。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部