form表单及数据库表操作
1、form表单验证 wtforms
需要下载包 pip3 install wtforms
简单使用:
from flask importFlask, render_template, request, redirectfrom wtforms importFormfrom wtforms importvalidatorsfrom wtforms.fields importsimplefrom wtforms importwidgets
app= Flask(__name__, template_folder='templates')#app.debug = True
classLoginForm(Form):
name=simple.StringField(#标签名
label='用户名',
validators=[#必须要有,错误信息
validators.DataRequired(message='用户名不能为空!'),#校验规则
validators.Length(min=6, max=18, message='用户名长度必须大于%(min)d且小于%(max)d')
],
widget=widgets.TextInput(), #页面上显示的类型text或者password
render_kw={'class': 'outter'} #给标签设置类属性
)
pwd=simple.PasswordField(
label='密码',
validators=[
validators.DataRequired(message='密码不能为空!'),
validators.Length(min=8, message='密码长度必须大于%(min)d'),#可以使用正则
validators.Regexp(regex="^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[$@$!%*?&])[A-Za-z\d$@$!%*?&]{8,}",
message='密码至少8个字符,至少1个大写字母,1个小写字母,1个数字和1个特殊字符')
],
widget=widgets.PasswordInput(),
render_kw={'class': 'password'}
)
@app.route('/login', methods=['POST', 'GET'])deflogin():if request.method == 'GET':
form=LoginForm()return render_template('login.html', form=form)else:
form= LoginForm(formdata=request.form)ifform.validate():print('用户提交的是:', form.data)else:print(form.errors)return render_template('login.html', form=form)if __name__ == '__main__':
app.run()
login.py
登录
{{form.name.label}} {{form.name}} {{form.name.errors[0] }}
{{form.pwd.label}} {{form.pwd}} {{form.pwd.errors[0] }}