大家好,我是天空之城,今天带来小福利,flask数据库中的WTForms表单验证
Flask-WTF是简化了WTForms操作的一个第三方库。
WTForms表单的两个主要功能是验证用户提交数据的合法性以及渲染模板。当然还包括一些其他的功能:CSRF保护,文件上传等。安装Flask-WTF默认也会安装WTForms,因此使用以下命令来安装Flask-WTF
pip install flask-wtf
表单验证
安装完Flask-WTF后。来看下第一个功能,就是用表单来做数据验证,现在有一个forms.py文件,然后在里面创建一个RegistForm的注册验证表单
在这个里面指定了需要上传的参数,并且指定了验证器,比如name的长度应该在4-25之间。email必须要满足邮箱的格式。password长度必须在6-10之间,并且应该和confirm相等才能通过验证
写完表单后,接下来就是regist.html文件
再来看视图函数regist
RegistForm传递的是request.form进去进行初始化,并且判断form.validate会返回用户提交的数据是否满足表单的验证
渲染模板
form还可以渲染模板,让你少写了一丢丢的代码,比如重写以上例子,RegistForm表单代码如下
以上增加了第一个位置参数,用来在html文件中,做标签提示作用。
在app中的视图函数中,修改为如下
以上唯一的不同是在渲染模板的时候传入了form表单参数进去,这样在模板中就可以使用表单form变量了。
接下来看下regist.html文件
<form action="/regist/" method="POST">
<table>
<tr>
<td>{{ form.name.label }}</td>
<td>{{ form.name() }}</td>
</tr>
<tr>
<td>{{ form.email.label }}</td>
<td>{{ form.email() }}</td>
</tr>
<tr>
<td>{{ form.password.label }}</td>
<td>{{ form.password() }}</td>
</tr>
<tr>
<td>{{ form.confirm.label }}</td>
<td>{{ form.confirm() }}</td>
</tr>
<tr>
<td></td>
<td><input type="submit" value="提交"></td>
</tr>
</table>
</form>
文件上传
@app.route('/upload/',methods=['GET','POST'])
def upload():
if request.method == 'GET':
return render_template('upload.html')
else:
# 获取描述信息
desc = request.form.get("desc")
avatar = request.files.get("avatar")
filename = secure_filename(avatar.filename)
avatar.save(os.path.join(UPLOAD_PATH,filename))
print(desc)
return '文件上传成功'
@app.route('/images/<filename>/')
def get_image(filename):
return send_from_directory(UPLOAD_PATH,filename)
对上传文件使用表单验证
python flask使用 secure_filename()获取中文文件名问题https://blog.csdn.net/qq_36390239/article/details/98847888