Flask-wtf,wtforms,What The Fuck!!!

昨晚到今天早晨,我花了快3小时看这个东西。

妈妈的,转晕了。


草草草。


总结下吧:

Flask WTF

Quickstart

1.创建基本表单

from flask_wtf import Form
from wtforms import TextField
from wtforms.validators import DataRequired

class MyForm(Form):
    name = TextField('name', validators=[DataRequired()])

2.对应的template

<form method="POST" action="/">
    {{ form.csrf_token }}
    {{ form.name.label }} {{ form.name(size=20) }}
    <input type="submit" value="Go">
</form>
其中{{ form.csrf_token }}最好改为{{ form.hidden_tag() }}。


3.验证表单

@app.route('/submit', methods=('GET', 'POST'))
def submit():
    form = MyForm()
    if form.validate_on_submit():
        return redirect('/success')
    return render_template('submit.html', form=form)
其中validate_on_submit将会验证是否为POST请求以及验证所有有效性

Creating Forms

1.表单安全

csrf的开关和secret_key,暂时略。用时再加在这


2.文件上传

等私人博客增加上传图片功能时,再看。SAE Storage


3.HTML5 Widgets

用时再看


4.验证码

暂时略


5.API

暂时略



WTFORMS

1.略


2.Fields

2.1基本字段

BooleanField(default field arguments, false_values=None) 代表checkbox

DateField,略

DecimalField

FielField

IntegerField

RadioField

PasswordField

TextAreaField


3.Validators

ValidationError(message=u'',*args,**kwargs) 引发当一个验证器验证输入出错时


内建validators:

DataRequired(message=None)

InputRequired 这两个的区别?

Email(message=None) 验证email地址,应该是内置正则吧

EqualTo(fieldname,message=None) 比较两个字段的值

Length(min=-1,max=+1,message=None) 可以格式化,没细看%d%d

NumberRange(min=None,max=None,messaga=None) 任何数%s%s

Optional 没看


定制validators:

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])
更强大的:

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

4.Widgets

暂时略


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值