当我使用 djangoreostframework-simplejwt 获取访问令牌和刷新令牌时,我将使用电子邮件而不是用户名。所以写完代码后,我可以访问我的浏览器并确认将用户名字段重命名为电子邮件。但是当我在电子邮件字段中发布用户的电子邮件时,出现以下错误。
"detail": "没有找到具有给定凭据的活动帐户"
你能告诉我我的代码有什么问题吗?这是我的代码。
序列化程序.py
from rest_framework_simplejwt.serializers import TokenObtainSerializer
from django.contrib.auth.models import User
class EmailTokenObtainSerializer(TokenObtainSerializer):
username_field = User.EMAIL_FIELD
class CustomTokenObtainPairSerializer(EmailTokenObtainSerializer):
@classmethod
def get_token(cls, user):
return RefreshToken.for_user(user)
def validate(self, attrs):
data = super().validate(attrs)
refresh = self.get_token(self.user)
data["refresh"] = str(refresh)
data["access"] = str(refresh.access_token)
return data
视图.py
from rest_framework_simplejwt.views import TokenObtainPairView
from .serializers import CustomTokenObtainPairSerializer
class EmailTokenObtainPairView(TokenObtainPairView):
serializer_class = CustomTokenObtainPairSerializer
谢谢