8.4 用户注册

  • 用户注册的界面,和注册POST请求共用同一个视图函数,兼容POST,GET请求。

  • 表单验证的结果数据,赋值到User模型里,可以在Base类里编写一个set_attrs函数,统一将属性拷贝赋值。动态赋值。

  • 验证器中还应该加入业务逻辑的校验,如email不能重复,这需要自己定义验证器,以vaildate_开头

  • 使用filter_by自定义数据库查询

  • 数据库的密码,前端传来的是明文,需要密文加密到数据库,应该给User的password提供getter/setter函数。在set值的时候,将password加密在赋值给User的_password。

  • 使用db.session,采用ORM方式将数据存储到数据库

  • 如果登录成功,则重定向到登录界面

web/auth.py

@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 render_template('auth/register.html', form={'data': {}})

models/user.py

models/base.py

forms/auth.py

Last updated

Was this helpful?