vlambda博客
学习文章列表

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 Blueprintweb = Blueprint("web", __name__)from app.web import auth