Проверка аутентификации django check.password не работает

check.password не работает и вот сообщение об ошибке :

packages\django\contrib\auth\base_user.py", строка 115, in check_password return check_password(raw_password, self.password, setter) Файл "C:\Python310\lib\site-

packages\django\contrib\auth\hashers.py", строка 55, in check_password must_update = hasher_changed или preferred.must_update(encoded) Файл "C:\Python310\lib\site-

packages\django\contrib\auth\hashers.py", строка 332, in must_update decoded = self.decode(encoded) Файл "C:\Python310\lib\site-

packages\django\contrib\auth\hashers.py", строка 308, in decode алгоритм, итерации, соль, хэш = encoded.split("$", 3) ValueError: недостаточно значений для распаковки (ожидалось 4, получено 3)

вот виды:

from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework.exceptions import AuthenticationFailed
from .serializers import UserSerializer
from .models import User

class RegisterView(APIView):
    def post(self, request):
        serializer = UserSerializer(data=request.data)
        serializer.is_valid(raise_exception=True)
        serializer.save()
        return Response(serializer.data)

class LoginView(APIView):
    def post(self, request):
        email = request.data['email']
        password = request.data['password']

        user = User.objects.filter(email=email).first()

        if user is None:
            raise AuthenticationFailed('user not found')
            
        if not user.check_password(password):
            raise AuthenticationFailed('incorrect password !')

        return Response({
            'message':'succes'})

сериализаторы :

from rest_framework import serializers
from .models import User


class UserSerializer(serializers.ModelSerializer):
    class Meta:
        model = User
        fields =['id','name','email','password']
        extra_kwargs = {
            'password':{'write_only':True}
        }
    
    def create(self, validated_data):
        password = validated_data.pop('password',None)
        instance = self.Meta.model(**validated_data)
        if password is not None:
            instance.set_password(password)
        instance.save()
        return instance

модели :

import email
from unicodedata import name
from django.db import models
from django.contrib.auth.models import AbstractUser

# Create your models here

class User(AbstractUser):
    name = models.CharField(max_length=50)
    email = models.CharField(max_length=50 , unique=True)
    password = models.CharField(max_length=30)
    username = None

    USERNAME_FIELD = 'email'
    REQUIRED_FIELDS = []
Вернуться на верх