WTForm学习笔记

flask-WTF是对WTForms的再封装,使其更好更方便地适用于flask框架。WTForms表单的两个主要功能是验证用户提交数据的合法性和渲染模板。

安装:pip3 install flask-WTF

安装flask-WTF的时候也会自动把WTForms也安装了。

对于表单验证,如注册表单,要输入用户名,密码,重复密码,而且有很多规则限制,如长度,必须字母开头且包含数字字母下划线中的两种或以上等等,这时候就得在后端做很多逻辑判断,比较烦杂。WTForms可以帮我们来处理验证问题。

以下是注册表单的简单处理:

app.py:

 1 from flask import Flask,request,render_template
 2 from forms import RegisterForm,LoginForm
 3 app = Flask(__name__)
 4 
 5 @app.route('/')
 6 def hello_world():
 7     return "hello world"
 8 
 9 @app.route('/register',methods=['GET','POST'])
10 def register():
11     if request.method == "GET":
12         return render_template('register.html')
13     else:
14         form = RegisterForm(request.form)
15         if form.validate():
16             return "注册成功!!"
17         else:
18             return return_err_message('register.html',form)
19 
20 
21 @app.route('/login',methods=['GET','POST'])
22 def login():
23     if request.method == "GET":
24         return render_template('login.html')
25     else:
26         form = LoginForm(request.form)
27         if form.validate():
28             return "登录成功!!"
29         else:
30             return return_err_message('login.html',form)
31 
32 
33 def return_err_message(template,form):
34     print(form.errors)
35     err_message = list(form.errors.values())[0][0]
36     print(err_message)
37     content = {
38         'err_message': err_message
39     }
40     return render_template(template, **content)
41 
42 
43 if __name__ == '__main__':
44     app.run()

register.html:

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>register</title>
 6 </head>
 7 <body>
 8 <form action="" method="post">
 9     <table>
10         <tr>
11             <td>邮箱:</td>
12             <td><input type="text" name="email"></td>
13         </tr>
14         <tr>
15             <td>用户名:</td>
16             <td><input type="text" name="username"></td>
17         </tr>
18         <tr>
19             <td>密码:</td>
20             <td><input type="password" name="pwd"></td>
21         </tr>
22         <tr>
23             <td>重复密码:</td>
24             <td><input type="password" name="pwd_rep"></td>
25         </tr>
26         <tr>
27             <td>年龄:</td>
28             <td><input type="text" name="age"></td>
29         </tr>
30         <tr>
31             <td>手机号:</td>
32             <td><input type="text" name="phone"></td>
33         </tr>
34         <tr>
35             <td>主页:</td>
36             <td><input type="text" name="homepage"></td>
37         </tr>
38         <tr>
39             <td>UUID:</td>
40             <td><input type="text" name="uuid"></td>
41         </tr>
42         <tr>
43             <td></td>
44             <td><input type="submit" value="立即注册"></td>
45         </tr>
46     </table>
47     {% if err_message %}
48         <p style="color: red">{{ err_message }}</p>
49     {% endif %}
50 </form>
51 </body>
52 </html>
扫描二维码关注公众号,回复: 10867710 查看本文章

 实际页面:

猜你喜欢

转载自www.cnblogs.com/wangyi0419/p/12710263.html