【问题标题】:Custom error message for invalid datetime format using flask wtform DateTimeField使用烧瓶 wtform DateTimeField 的无效日期时间格式的自定义错误消息
【发布时间】:2017-06-27 12:27:45
【问题描述】:

当给定的日期时间格式不正确时,我想收到一条自定义错误消息。

表单类:

class NewShift(Form):
    start_date = DateTimeField(u'start-date', validators=[DataRequired("Start must be specified")], format='%d.%m.%Y %H.%M')
    end_date = DateTimeField(u'end-date', validators=[DataRequired("End must be specified")], format='%d.%m.%Y %H.%M') # ... 

观点:

def new_shift():
    form = NewShift(request.form)
    if request.method == "POST":
        if not form.validate():
            print(form.errors)
            return render_template("add_shift.html", form=form, success=False)
        else:
            return render_template("add_shift.html", form=form, success=True)

现在的问题是,如果DateTimeField() 包含不正确的日期时间格式,我会从DataRequired() 函数中收到错误消息。如何为这种情况指定自定义错误消息?

【问题讨论】:

    标签: forms python-3.x datetime flask flask-wtforms


    【解决方案1】:

    我查看了 WTForms 的文档,但一无所获,所以我的建议是使用自定义验证器创建一个 StringField,例如:

    from datetime import datetime
    from flask_wtf import FlaskForm
    from wtforms import StringField
    from wtforms.validators import ValidationError
    
    class NewShift(FlaskForm):
        start = StringField(u'Up and At Them')
        end = StringField(u'Another Day in the Office')
    
        def validate_start(form, field):
            try:
                datetime.strptime(field.data, '%d.%m.%Y %H.%M')
            except Exception:
                raise ValidationError('Wrong Input Format!')
        def validate_end(form, field):
            try:
                datetime.strptime(field.data, '%d.%m.%Y %H.%M')
            except Exception:
                raise ValidationError('Wrong Input Format!')
    

    那么当你想存储数据的时候,就做一个strptime。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-19
      • 1970-01-01
      • 2015-02-26
      • 1970-01-01
      • 1970-01-01
      • 2018-01-10
      • 2011-11-25
      • 1970-01-01
      相关资源
      最近更新 更多