django 用户名和邮箱都能登陆的方法学习小记

本文记录了在Django中实现用户既能通过用户名又能通过邮箱登录的方法。主要涉及自定义认证后端`CustomBackend`,继承`ModelBackend`并重写`authenticate`方法,然后在settings中配置新的认证后端。登录流程包括判断请求方式,获取用户名或邮箱及密码,调用认证方法,成功后登录并展示用户信息,失败则返回登录页面并显示错误信息。
摘要由CSDN通过智能技术生成

1.用户名、邮箱都能登陆的方法:

简述:导入auth里面的authenticate,login,ModelBackend 另外导入:db.models 下面的Q 通过重写一个CustomBackend类来继承ModelBackend在里面重构authenticate,完成后在setting里面配置auth指向新建的CustomBackend类,即可实现邮箱以及用户名都能登陆的方法。例子如下:

from django.contrib.auth import authenticate,login
from django.contrib.auth.backends import ModelBackend
from django.db.models import Q

#Q相当于数据库查询里面的or

from .models import UserProfile

# Create your views here.


class CustomBackend(ModelBackend):
    def authenticate(self, request, username=None, password=None, **kwargs):
        try:
            user = UserProfile.objects.get(Q(username=username) | Q(email=username))
            #调用UserProfile里面的check_password来检验密码是否正确。
            if user.check_password(password):
                return user
        except Exception as e:
            return None

2.登陆流程

简介:判断request.met

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值