Django电商网站--登录功能

在完成注册功能之后,登录功能就较为简单了,主要思路逻辑如下:
设置LoginView类负责登录功能
设置get方法负责响应请求,反馈用户登录页面
设置post方法 得到用户填写的用户名/手机号以及密码和是否保持登录状态的选择
校验用户名/手机号以及密码是否填写完整及合规
用Django自带的authenticate函数校验用户名及密码并相应结果
如果用户勾选同意保持登录状态,则设置session的过期时间,默认2周,如果用户不同意,则设置session过期时间为0
最后重定向至响应的页面。

需要注意的是,Django中封装的authenticate函数只设置了校验username,如果需要用户通过手机号也能登录,那就需要将原有的方法进行修改,在使用一个新类(UsernameMobileBackend)继承ModelBackend类,并在authenticate方法中增加mobile,
try:
    if re.match(r'^1[3-9]\d{9}$', account):  #username == 手机号
        user = User.objects.get(mobile=account)
    else:
        user = User.objects.get(username=account)
except User.DoesNotExist:
    return None
else:
    return user

之后还要在setting文件中进行关联设置
指定自定义用户认证后端
AUTHENTICATION\_BACKENDS = ['apps.users.utils.UsernameMobileBackend']

你可能感兴趣的:(pythondjango)