博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
WTForms 小计2 Field
阅读量:7217 次
发布时间:2019-06-29

本文共 4731 字,大约阅读时间需要 15 分钟。

hot3.png

class MyForm(Form):    name    = StringField(u'Full Name', [validators.required(), validators.length(max=10)])    address = TextAreaField(u'Mailing Address', [validators.optional(), validators.length(max=200)])

两个问题:

多少个field

classwtforms.fields.BooleanField(default field argumentsfalse_values=None)

classwtforms.fields.DateField(default field argumentsformat='%Y-%m-%d')

classwtforms.fields.DateTimeField(default field argumentsformat='%Y-%m-%d %H:%M:%S')

classwtforms.fields.DecimalField(default field argumentsplaces=2rounding=None,use_locale=Falsenumber_format=None)

classwtforms.fields.FileField(default field arguments)

class UploadForm(Form):    image        = FileField(u'Image File', [validators.regexp(u'^[^/\\]\.jpg$')])    description  = TextAreaField(u'Image Description')    def validate_image(form, field):        if field.data:            field.data = re.sub(r'[^a-z0-9_.-]', '_', field.data)def upload(request):    form = UploadForm(request.POST)    if form.image.data:        image_data = request.FILES[form.image.name].read()        open(os.path.join(UPLOAD_PATH, form.image.data), 'w').write(image_data)

classwtforms.fields.FloatField(default field arguments)

classwtforms.fields.IntegerField(default field arguments)

classwtforms.fields.RadioField(default field argumentschoices=[]coerce=unicode)

classwtforms.fields.SelectField(default field argumentschoices=[]coerce=unicode,option_widget=None)

静态

class PastebinEntry(Form):    language = SelectField(u'Programming Language', choices=[('cpp', 'C++'), ('py', 'Python'), ('text', 'Plain Text')])

动态

class UserDetails(Form):    group_id = SelectField(u'Group', coerce=int)def edit_user(request, id):    user = User.query.get(id)    form = UserDetails(request.POST, obj=user)    form.group_id.choices = [(g.id, g.name) for g in Group.query.order_by('name')]

classwtforms.fields.SelectMultipleField(default field argumentschoices=[]coerce=unicodeoption_widget=None)

classwtforms.fields.SubmitField(default field arguments)

classwtforms.fields.StringField(default field arguments)

classwtforms.fields.HiddenField(default field arguments)

classwtforms.fields.PasswordField(default field arguments)

classwtforms.fields.TextAreaField(default field arguments)

验证规则

classwtforms.validators.ValidationError(message=u''*args**kwargs)

classwtforms.validators.StopValidation(message=u''*args**kwargs)

classwtforms.validators.DataRequired(message=None)

classwtforms.validators.Email(message=None)

classwtforms.validators.EqualTo(fieldnamemessage=None)

class ChangePassword(Form):    password = PasswordField('New Password', [InputRequired(), EqualTo('confirm', message='Passwords must match')])    confirm  = PasswordField('Repeat Password')

classwtforms.validators.InputRequired(message=None)

classwtforms.validators.IPAddress(ipv4=Trueipv6=Falsemessage=None)

classwtforms.validators.Length(min=-1max=-1message=None)

classwtforms.validators.MacAddress(message=None)

classwtforms.validators.NumberRange(min=Nonemax=Nonemessage=None)

classwtforms.validators.Optional(strip_whitespace=True)

classwtforms.validators.Regexp(regexflags=0message=None)

classwtforms.validators.URL(require_tld=Truemessage=None)

classwtforms.validators.UUID(message=None)

classwtforms.validators.AnyOf(valuesmessage=Nonevalues_formatter=None)

classwtforms.validators.NoneOf(valuesmessage=Nonevalues_formatter=None)

自定义验证:

简单方式class MyForm(Form):    name = StringField('Name', [InputRequired()])    def validate_name(form, field):        if len(field.data) > 50:            raise ValidationError('Name must be less than 50 characters')重用模式def my_length_check(form, field):    if len(field.data) > 50:        raise ValidationError('Field must be less than 50 characters')class MyForm(Form):    name = StringField('Name', [InputRequired(), my_length_check])扩展优化def length(min=-1, max=-1):    message = 'Must be between %d and %d characters long.' % (min, max)    def _length(form, field):        l = field.data and len(field.data) or 0        if l < min or max != -1 and l > max:            raise ValidationError(message)    return _lengthclass MyForm(Form):    name = StringField('Name', [InputRequired(), length(max=50)])继续扩张优化class Length(object):    def __init__(self, min=-1, max=-1, message=None):        self.min = min        self.max = max        if not message:            message = u'Field must be between %i and %i characters long.' % (min, max)        self.message = message    def __call__(self, form, field):        l = field.data and len(field.data) or 0        if l < self.min or self.max != -1 and l > self.max:            raise ValidationError(self.message)length = Length

转载于:https://my.oschina.net/012345678/blog/295804

你可能感兴趣的文章
并发下的死锁问题
查看>>
Winserver下的Hyper-v “未在远程桌面会话中捕获到鼠标”
查看>>
oracle体系结构基础
查看>>
有关TCP和UDP 粘包 消息保护边界
查看>>
Mono为何能跨平台?聊聊CIL(MSIL)
查看>>
安装scrapy问题:-bash:scrapy:command not found
查看>>
CentOS7 重置root密码
查看>>
博客作业四
查看>>
Scanner 输入---从键盘输入两个数进行相加
查看>>
test
查看>>
说无可说
查看>>
mysql 语句优化
查看>>
SCP 命令参数使用详解(最详细使用指南)
查看>>
windows cmd color setup
查看>>
一些问题
查看>>
ubuntu配置cudnn
查看>>
P1242 新汉诺塔 && UVA10795 A Different Task
查看>>
从零开始学习PYTHON3讲义(十一)计算器升级啦
查看>>
从零开始学习PYTHON3讲义(三)写第一个程序
查看>>
WebGis设计模式
查看>>