【问题标题】:Flask wtf validators Length min and max does not worksFlask wtf验证器长度最小值和最大值不起作用
【发布时间】:2021-09-30 14:31:51
【问题描述】:

我用 sqlite3 数据库和 app.route 添加和 app.route 保存构建 Flask 应用程序

我对验证器有疑问,其中一些有效,有些无效 validators.DataRequired() 有效 URLField() 有效

但是 validators.Length(min=1,max=15) 根本不起作用


from flask_wtf import FlaskForm #I aslo I also tried with Form
from wtforms import BooleanField, StringField, IntegerField, validators,SubmitField
from wtforms.fields.html5 import URLField

class AddRecValidators(FlaskForm): # <---I aslo I also tried with Form

    title = StringField('Title:',[validators.DataRequired(), validators.Length(min=1,max=35,message="Title too long max 35 characters")])
    authors = StringField('Authors:',[validators.Length(min=1,max=100)])
    published_date = IntegerField('Published date:',[validators.Length(min=1,max=4)])
    isbn_or_identifier = StringField('ISBN:',[validators.Length(min=1,max=15)])
    page_count = IntegerField('Page count:',[ validators.Length(min=1,max=10000)])
    language = StringField('Language:',[ validators.Length(min=1,max=3)])
    image_links = URLField('Image links:')
    
    submit = SubmitField(label=('Add to library'))

【问题讨论】:

    标签: validation flask wtforms


    【解决方案1】:

    您正在验证的输入类型似乎使用了错误的验证器。

    validators.Length() 用于字符串,see here
    对于整数,请尝试使用NumberRange

    from flask_wtf import FlaskForm
    from wtforms import BooleanField, StringField, IntegerField, validators,SubmitField
    from wtforms.fields.html5 import URLField
    
    class AddRecValidators(FlaskForm): 
    
        title = StringField('Title:',[validators.DataRequired(), validators.Length(min=1,max=35,message="Title too long max 35 characters")])
        authors = StringField('Authors:',[validators.Length(min=1,max=100)])
        published_date = IntegerField('Published date:',[validators.NumberRange(min=1,max=4)]) # <-- note change to NumberRange
        isbn_or_identifier = StringField('ISBN:',[validators.Length(min=1,max=15)])
        page_count = IntegerField('Page count:',[ validators.NumberRange(min=1,max=10000)]) # <-- note change to NumberRange
        language = StringField('Language:',[ validators.Length(min=1,max=3)])
        image_links = URLField('Image links:')
        
        submit = SubmitField(label=('Add to library'))
    

    另外,here are the docs for flask-wtforms validators.

    【讨论】:

      猜你喜欢
      • 2017-11-18
      • 1970-01-01
      • 1970-01-01
      • 2015-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-09
      • 1970-01-01
      相关资源
      最近更新 更多