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' , ) |