Как я могу использовать Serializer для выхода из системы?

Я новичок в Django и готовлюсь к сессии DRF.

Мне нужно написать код в Serializers.py и views.py для функции Logout, но я не знаю, что делать и с чего начать. Не могли бы вы помочь? Вот код для регистрации и входа

Serialzers.py

from rest_framework import serializers
from .models import *
    
    
    class UserSerializer(serializers.ModelSerializer):
        class Meta:
            model = User
            fields = ['id', 'username', 'email', 'password']
    
        def create(self, validated_data):
            user = User.objects.create(
                email=validated_data['email'], username=validated_data['username'],)
            user.set_password(validated_data['password'])
            user.save()
    
            return user
    
    
    class UserLoginSerializer(serializers.Serializer):
        email = serializers.CharField(max_length=64)
        password = serializers.CharField(max_length=128, write_only=True)
    
        def validate(self, data): 
            email = data.get("email", None)
            password = data.get("password", None)
    
            if User.objects.filter(email=email).exists():
                user = User.objects.get(email=email)
                if not user.check_password(password):
                    raise serializers.ValidationError()
                else:
                    return user
            else:
                raise serializers.ValidationError()
    
    class UserLogoutSerializer(serializers.Serializer):
        # I have to do this part

views.py

from django.shortcuts import get_object_or_404, render
from .serializers import *
from .models import *
from rest_framework import views
from rest_framework.response import Response           

class SignUpView(views.APIView):
    def post(self, request, format=None):
        serializer = UserSerializer(data=request.data)
        if serializer.is_valid():
            serializer.save()
            return Response({'message': 'Success', 'data': serializer.data})
        return Response({'message': 'Fail', 'error': serializer.errors})


class LoginView(views.APIView):
    def post(self, request):
        serializer = UserLoginSerializer(data=request.data)

        if serializer.is_valid():
            return Response({'message': "Success", 'data': serializer.data})
        return Response({'message': "Fail", 'data': serializer.errors})


class LogoutView(views.APIView):

Не обязательно использовать сериализатор. Выход из системы может быть таким же простым, как однократный вызов конечной точки (выход из системы просто отключает любой активный токен авторизации). Попробуйте следующее:

from django.contrib.auth import logout

class LogoutView(views.APIView):
    def post(self, request):
        logout(request)
        return Response({'message': "Logout successful"})

Это зависит от того, как вы аутентифицируете пользователя. Из вашего кода я не вижу, как вы на самом деле аутентифицируете пользователя (похоже, вы только проверяете, существует ли пользователь, вы нигде не даете ему токен авторизации). В принципе, я не уверен, как можно выйти из системы в вашей текущей архитектуре, так как нет пользователя, вошедшего в систему, чтобы выйти из нее.

Возможно, вы захотите рассмотреть возможность аутентификации по токену ..

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