django如何用邮箱代替用户名登录

有两种方法

方法一,修改username字段,让他跟email字段一模一样,然后把email放到username,email字段里面,username放到firstname或者lastname里面,这样username其实就是email了。简单方便,而且代码改动也比较少,我使用的是这种。

方法二,自己写一个方法来验证,然后加进setting里面。

下面方法转自http://www.cnblogs.com/aguncn/p/5653850.html

就是另一个不同的登陆backend。

而DJANGO会尝不同的方式,哪个成功就用哪个

authentication.py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
from  django.contrib.auth.models  import  User
 
 
class  EmailAuthBackend( object ):
     def  authenticate( self , username = None , password = None ):
         try :
             user  =  User.objects.get(email = username)
             if  user.check_password(password):
                 return  user
             return  None
         except  User.DoesNotExist:
             return  None
 
     def  get_user( self , user_id):
         try :
             return  User.objects.get(pk = user_id)
         except  User.DoesNotExist:
             return  None

  setting.py中加一个认证方式:

1
2
3
4
AUTHENTICATION_BACKENDS  =  (
     'django.contrib.auth.backends.ModelBackend' ,
     'account.authentication.EmailAuthBackend' ,
)

 

转载于:https://www.cnblogs.com/lgh344902118/p/6594276.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值