那是因为django-allauth
与 无关django-rest-framework-jwt
。你在里面设置的设置settings.py
是属于的,django-allauth
所以如果你想使用这些设置,那么你应该使用django-allauth
视图。
有了django-rest-framework-jwt
视图,我查看了obtain_jwt_token
视图,并且看到它们get_user_model().USERNAME_FIELD
用于获取用户名字段。
from django.contrib.auth import get_user_model
def get_username_field():
try:
username_field = get_user_model().USERNAME_FIELD
except AttributeError:
username_field = 'username'
return username_field
因此,如果您想将用户名字段更改为另一个,您可以创建一个自定义User
模型,然后将值设置为USERNAME_FIELD
toemail
以允许用户通过email
而不是登录username
。像这样:
app_name/models.py
from django.contrib.auth.models import AbstractUser
from django.db import models
class User(AbstractUser):
USERNAME_FIELD = 'email'
def __str__(self):
return self.email
在你的settings.py 上:
AUTH_USER_MODEL = 'app_name.User'