Flask实现用户注册
数据库信息就用我们之前发过的文章里面的user表来保存用户信息。
auth.py,实现对注册信息的校验,包括昵称,密码,以及邮箱规则等,我们使用wtforms提供的规则来进行校验。
# app/forms/auth.py
# 对注册信息的校验
class RegisterForm(Form):
nickname = StringField(validators=[DataRequired(), Length(2, 10, message='昵称长度为2至10位')])
password = PasswordField(validators=[DataRequired('密码不能为空'), Length(2, 20, message='密码长度为6至20位')])
email = StringField(validators=[DataRequired(), Length(2, 64), Email(message='邮箱格式不符合标准')])
# 自定义校验信息
def validate_email(self, field):
if User.query.filter_by(email=field.data).first():
raise ValidationError("邮箱已经被注册")
def validate_nickname(self, field):
if User.query.filter_by(nickname=field.data).first():
raise ValidationError("昵称已经被使用")
接受处理后的用户数据,并把用户的注册信息保存在数据库中。
@web.route('/register', methods=['GET', 'POST'])
def register():
form = RegisterForm(request.form)
if request.method == 'POST' and form.validate():
user = User()
user.set_attrs(form.data)
db.session.add(user)
db.session.commit()
return redirect(url_for('web.login'))
return render_template("auth/register.html", form=form)
将写好的路由注册到蓝图中
from flask import Blueprint
web = Blueprint("web", __name__)
from app.web import auth