django中使用邮箱进行登陆

来源:互联网 发布:技术指标知乎 编辑:程序博客网 时间:2024/05/01 06:53

登陆视图

def user_login(request):    """登陆视图"""    if request.method == 'GET':        return render(request, 'login.html')    elif request.method == 'POST':    # 获取 表单提交上来的信息 通过 内置的认证方法进行认证 认证成功进行登陆        username = request.POST.get('username')        password = request.POST.get('password')        user = authenticate(username=username, password=password)        # 如果认证成功返回user 不成功返回none        if user is not None:            login(request, user)  # 调用内置的登陆函数            return redirect('/index/')        else:            return render(request, 'login.html', {'err': "用户名或者密码错误"})

定义类允许使用邮箱进行登陆

需要在settings 中进行配置:配置如下:# 配置允许采用邮箱登陆 是一个元组 必须加上逗号AUTHENTICATION_BACKENDS = (    'users.views.CustomBackend',)使用邮箱进行验证登陆的类的实现class CustomBackend(ModelBackend):    """验证用户 让用户可以使用邮箱登陆"""    def authenticate(self, username=None, password=None, **kwargs):        try:            # 做并集进行查询  使用Q            print(username)            user = UserProfile.objects.get(Q(username=username)|Q(email=username))            # 先查user 然后调用方法去比较密码            if user.check_password(password):                return user        except Exception as err:            return None
原创粉丝点击