Python day43_Flask入门
使用 Flask-WTF 实现表单
- 导入wtf扩展的表单类,导入自定义表单需要的字段,导入wtf扩展提供的表单验证器
- 自定义表单类 文本字段 密码字段 提交按钮
- 创建表单类, 传入模板
- 模板中使用变量代码块来显示
- 一旦调用 会去自定义类中寻找当初定义的验证器 一次性全部执行
代码 用于表单验证:
#python部分:
from flask import Flask,render_template
from flask import flash
from flask import request
from flask_wtf import FlaskForm
from wtforms import SubmitField,StringField,PasswordField
from wtforms.validators import DataRequired,EqualTo
app = Flask(__name__)
# 关闭CSRF 表单验证
app.config['WTF_CSRF_ENABLED'] = False
app.secret_key = 'zhangsan'
# 自定义表单类(表单样式 和验证逻辑)
class registerForm(FlaskForm):
# < label > 用户名: < / label > < input type = "text" name = "username" placeholder = "请输入用户名" > < br / >
# StringField :文本框 看Field类
# 传值:第一个是label 值, 第二个是验证器 render_kw 就是一个提示信息
# validators=[DataRequired()] :只要写入这个 就说明(验证) 文本框输入内容不能为空
username = StringField('用户名:',validators=[DataRequired()],render_kw={'placeholder':'请输入用户名'})
password = PasswordField('密码:',validators=[DataRequired()],render_kw={'placeholder':'请输入密码'})
# EqualTo(password, '两次密码不一致'): 增加了另一个验证器, 第一个参数 是要对比的文本框, 第二个参数 对比失败时的提示
password2 = PasswordField('确认密码:',validators=[DataRequired(),EqualTo('password','两次密码不一致')],render_kw={'placeholder':'请输入确认密码'})
submit = SubmitField('注册')
# 创建表单类传入模板
@app.route('/wtf_form',methods=['GET','POST'])
def wtf_form():
# 创建模板
register_form = registerForm()
# 模板中使用变量代码块来显示
# 验证
if request.method =='POST':
# validate_on_submit: 在提交时执行验证逻辑(此时的逻辑,在自定义的类中)
if register_form.validate_on_submit():
# 如果能进入这里, 说明所有的验证全部通过
return 'success'
else:
flash('参数有误')
# 将模板传入html
return render_template('09_index.html',form = register_form)
if __name__ == '__main__':
app.run(debug=True)
#html部分:
<body>
<form method="post">
{{ form.username.label }} {{ form.username }} <br>
{{ form.password.label }} {{ form.password }} <br>
{{ form.password2.label }} {{ form.password2 }} <br>
{{ form.submit }} <br>
</form>
{% for message in get_flashed_messages() %}
{{ message }}
{% endfor %}
</body>
WTForms支持的HTML标准字段
字段对象 说明
StringField
文本字段
TextAreaField
多行文本字段
PasswordField
密码文本字段
HiddenField
隐藏文件字段
DateField
文本字段,值为 表单对象.DataFiled.data
文本格式
IntegerField
文本字段,值为整数
DecimalField
文本字段,值为decimal.Decimal
FloatField
文本字段,值为浮点数
BooleanField
复选框,值为True 和 False
RadioField
一组单选框
SelectField
下拉列表
SelectMutipleField
下拉列表,可选择多个值
FileField
文件上传字段
SubmitField
表单提交按钮
FormField
把表单作为字段嵌入另一个表单
FieldList
一组指定类型的字段
WTForms常用验证函数
验证函数 说明
DataRequired
确保字段中有数据
EqualTo
比较两个字段的值,常用于比较两次密码输入
Length
验证输入的字符串长度
NumberRange
验证输入的值在数字范围内
URL
验证URL
AnyOf
验证输入值在可选列表中
NoneOf
验证输入值不在可选列表中