那是因为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_FIELDtoemail以允许用户通过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'