DRF simple-jwt ошибка "detail": "Не найдена активная учетная запись с заданными учетными данными".

Я могу создать учетную запись в DRF_simple_jwt, но когда дело доходит до входа в эту учетную запись, она говорит {"detail":"No active account found with the given credentials"} Я пробовал гуглить и пробовал это и многое другое, но все тщетно. Я не знаю, где кроется проблема. Вот мой код serializers.py

from rest_framework import serializers
from .models import *

from rest_framework_simplejwt.tokens import RefreshToken
from rest_framework_simplejwt.serializers import TokenObtainSerializer
from django.contrib.auth.hashers import make_password


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)

        

class UserSerializer(serializers.ModelSerializer):
    """
    Serializer for user object
    """
    isAdmin = serializers.SerializerMethodField(read_only=True)


    class Meta:
        model = User
        fields = ('id', 'username','isAdmin', 'email','phone','room','hostel')
       

    def get_isAdmin(self, obj):
        return obj.is_staff

    def validate_password(self, value: str) -> str:
        """
        Hash value passed by user.

        :   param value: password of a user
        :return: a hashed version of the password
        """
        return make_password(value)

и вот код для файла views.py

class EmailTokenObtainPairView(TokenObtainPairView):
    serializer_class = CustomTokenObtainPairSerializer

и вот urls.py:

path("login/", EmailTokenObtainPairView.as_view(), name="token_obtain_pair"),
    path("refresh/", TokenRefreshView.as_view(), name="token_refresh"),

Вы можете запросить дополнительные коды. Спасибо за помощь, потому что вы - моя последняя надежда.

в CustomTokenObtainPairSerializer необходимо вернуть данные

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

и не важно, но если вы не добавляете пользовательские утверждения к токену в своем методе get_token, вам не нужно переопределять этот метод

Вернуться на верх