flask(七)注册用户


实现了登录,注册就很简单了
在登录页面放注册的入口:


添加模板文件register.html




    
    
    
    
    

    
    
    
    
    
    

    注册 
    
    



{% if message %}

{{ message }}

{% endif %}

admin/forms.py添加代码:

class RegisterForm(Form):
    username = StringField(
        label='用户名',
        validators=[
            InputRequired('用户名为必填项'),
            Length(4,20,'用户名长度为4到20')
        ]
    )
    password = StringField(
        label='密码',
        validators=[
            InputRequired('密码为必填项'),
            Length(6,9,'密码长度为6到9')
        ]
    )
    password_confirm = PasswordField(
        label='重复密码',
        validators=[
            InputRequired(message='重复密码不能为空'),
            EqualTo('password', message="两次密码输入不一致")
        ],
    )
    email = EmailField(
        label='邮箱',
        validators=[
            InputRequired(message='邮箱不能为空.'),
            Email(message='邮箱格式错误')
        ],
    )

admin/views.py添加代码:

@bp.route("/register/",methods=['GET','POST'])
def register():
    error = None
    if request.method == 'GET':
        return render_template('admin/register.html')
    else:
        form=RegisterForm(request.form)
        if form.validate():
            user = request.form.get('username')
            pwd = request.form.get('password')
            pwd_c = request.form.get('password_confirm')
            email = request.form.get('email')
            users = Users.query.filter_by(username=user).first()
            emails = Users.query.filter_by(email=email).first()
            if users:
                error = "用户名已存在"
                return render_template('admin/register.html', message=error)
            elif emails:
                error = "邮箱已存在"
                return render_template('admin/register.html', message=error)
            else:
                add_obj = Users(username=user, password=pwd, email=email)  # 增加的内容
                try:
                    db.session.add(add_obj)
                    db.session.commit()
                    return redirect(url_for('admin.index'))
                except Exception as e:
                    error = "注册失败,请重新提交"
                    return render_template('admin/register.html', message=error)
        else:
            return render_template('admin/register.html', message=form.errors)