用户提交表单后,验证开始。页面中会有多个域要求验证,如text input,files, checkbox。同时,根据验证字段的不同,验证方式会有很多种,例如对邮箱、IP地址、电话的验证标准就各不相同。那么就要设计不同的验证标准,并且在将所有待验证域验证完毕后,返回验证是否成功的结果。这就是基本的实现了。

我们还可以将验证机制做得更细致、更友好些。第一点,并不是所有域名都是必须输入,也会有一些空着也无妨的域。那就可以对不同域做出区分。第二点,用户输入出错和空着没填,我们也可以区分开来,并且在前端动态地提示用户。第三点,对于每个用户输入域,我们都是获取用户输入,并拿自己定义的标准比对,这个过程其实是可以复用的,那是不是可以写一个基类将这些过程抽象并封装,让每个域去继承这一基本流程呢?

文件结构

Tornado-Form表单验证

两个启动文件,对应的分别的是基本表单验证实现和完整的验证实现。

HTML文件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Form验证</title>
    <style>
        .inputs_1{margin-left:36px;}
        .inputs_2{margin-left:50px;}
        .inputs_3{margin-left:18px;}
    </style>
</head>
<body>
    <form action="/index" method="post" enctype="multipart/form-data">
        IP地址<input type="text" name="ip" class="inputs_1">
        <span style="color:red;">
            {{ display_error_info(error_message_dict, 'ip') }}
        </span><br>
        <p>
            <input type="checkbox" name="game" value="1">马里奥
            <input type="checkbox" name="game" value="2">塞尔达
            <input type="checkbox" name="game" value="3">星之卡比
        </p>
        <span style="color:red;">
            {{ display_error_info(error_message_dict, 'game') }}
        </span><br>
        <input type="file" name="files"/>
        <input type="file" name="files"/>
        <input type="submit" value="提交">
        <span style="color:red;">
            {{ display_error_info(error_message_dict, 'files') }}
        </span><br>
    </form>

</body>
</html>
View Code

相关文章: