flask插件之Flask-WTF表单、flask_SQLAlchemy数据库的使用
环境:python3.5,Flask1.0.3
查看官方文档:http://www.pythondoc.com/flask-wtf/form.html
先pip安装
flask_wtf是flask框架的表单验证模块,可以很方便生成表单,也可以当做json数据交互的验证工具,支持热插拔。
pip install flask-WTF
需要csrf保护
设置app.secret_key即可
app.secret_key = 'qwertyudfghjkl;xcvbn'
最后,我们需要在响应的html模板的Form表单中加上如下语句:
{
{form.csrf_token}}
或者:
{
{form.hidden_tag()}}
其中的form是views.py中对应处理函数传递过来的Form对象名称,根据具体情况会有所变化。通过上面的配置,我们就启动了CSRF保护。
创建表单
通常是设置为一个表单类,然后在视图函数初始化为表单对象:
注意这个写完id也给你写了,默认等于name等于label
class RegisterForm(Form):
# 用户名,分别验证为必须字段,长度,以及额外设置属性
username = StringField('用户名:', [validators.data_required, validators.length(min=3, max=20)], render_kw={
'placeholder': '输入用户名'})
# email = StringField('Email Address', [validators.Length(min=6, max=35)])
# 密码和确认密码,需要验证是否一致,注意字段名不能填错
password = PasswordField('密码:', [
validators.DataRequired(),
validators.EqualTo('confirm', message='密码必须一致')
])
confirm = PasswordField('确认密码:')
# 这个是是否接收条件
# accept_tos = BooleanField('I accept the TOS', [validators.DataRequired()])
# 提交按钮
submit = SubmitField('注册')
然后在视图函数初始化并返回:
@app.route('/register', methods=['GET', 'POST'])
def register():
form = RegisterForm(request.form)
if request.method == 'POST' and form.validate():
# 这里准备些注册数据库
return 'register success'
return render_template('register.html', form=form)
最后是html内容显示,在body里写即可:
<form method="post" enctype="multipart/form-data">
{# {
{ form.hidden_tag() }}#}
{
{ form.csrf_token }}
{
{ form.username.label }}{
{ form.username }}<br>
{
{ form.password.label }}{
{ form.password }}<br>
{
{ form.confirm.label }}{
{ form.confirm }}<br>
{
{ form.submit }}<br>
</form>
创建用户模型
在mysql准备一个数据库例如名为flask的数据库
然后安装关系扩展和mysqldb:
pip install flask-sqlalchemy
pip install flask-mysqldb
先用app注册数据库地址:
# 用于连接数据库的uri地址,账户密码
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:mysql@127.0.0.1:3306/flask'
然后创建用户模型:
from flask_sqlalchemy import SQLAlchemy
app