zoukankan      html  css  js  c++  java
  • 五十四:WTForms表单验证之自定义表单验证器

    如果想要对表单中的某个字段进行自定义验证,则需要对这个字段进行单独的验证
    1、定义一个方法,命名规则为:validate_字段名(self, filed)
    2、在方法中,使用filed.data获取字段的值
    3、如果验证成功,则不需要做任何操作,如果验证失败,则需要抛出一个异常:wtforms.validators.ValidationError(异常信息)

    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>注册</title>
    </head>
    <body>
    <form action="#" method="post">
    <table>
    <tbody>
    <tr>
    <td>验证码:</td>
    <td><input type="text" name="captcha"></td>
    </tr>
    <tr>
    <td></td>
    <td><input type="submit" value="点击提交"></td>
    </tr>
    </tbody>
    </table>
    </form>
    </body>
    </html>

    from wtforms import Form, StringField
    from wtforms.validators import Length, ValidationError


    class RegistForm(Form):
    captcha = StringField(validators=[Length(4, 4, message='验证码为4位')])

    def validate_captcha(self, filed): # 自定义验证器:validate_字段名
    print(filed.data)
    print(type(filed))

    if filed.data != '1234':
    raise ValidationError('验证码错误') # 验证不通过时抛出异常

    from flask import Flask, request, render_template

    from forms import RegistForm

    app = Flask(__name__)


    @app.route('/regist/', methods=['GET', 'POST'])
    def regist():
    form = RegistForm(request.form)
    if request.method == 'POST':
    if form.validate():
    return '验证通过'
    else:
    print(form.errors)
    return form.errors
    return render_template('validate.html')


    if __name__ == '__main__':
    app.run(debug=True)

  • 相关阅读:
    一周最新示例代码回顾 (4/23–4/29)
    优酷的投票
    Google API获取用户信息
    CPU性能分析
    有意思的排序算法快速排序
    http响应LastModified和ETag以及asp.net web api实现
    java/C#多态漫谈
    有意思的排序算法插入排序
    [Architecture Pattern] Repository
    50个jQuery代码段帮你成为更出色的JS开发者
  • 原文地址:https://www.cnblogs.com/zhongyehai/p/11844998.html
Copyright © 2011-2022 走看看