django中使用邮箱进行登陆

本文介绍了如何在Django项目中创建登陆视图,并通过邮箱作为用户名进行用户验证和登陆操作。

登陆视图

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值