Перенаправление на обычное представление Django после входа в систему с помощью DRF API

Я получаю это в своей консоли всякий раз, когда я вхожу в систему, он успешно входит в систему, API возвращает 200, но затем, когда он пытается перенаправить на представление приборной панели, он возвращает 302 и перенаправляет на страницу входа

[09/Aug/2024 18:17:04] "GET /static/js/login.js HTTP/1.1" 200 2297
[09/Aug/2024 18:17:24] "POST /api/v1/token/login HTTP/1.1" 200 70
[09/Aug/2024 18:17:25] "GET /dashboard/ HTTP/1.1" 302 0
[09/Aug/2024 18:17:25] "GET /accounts/login/?next=/dashboard/ HTTP/1.1" 200 1451
[09/Aug/2024 18:17:25] "GET /static/js/login.js HTTP/1.1" 304 0
[09/Aug/2024 18:18:46] "GET /accounts/login/?next=/dashboard/ HTTP/1.1" 200 1451

Ниже приведен мой API для входа в систему, который проверяет подлинность пользователя, пытающегося войти в систему:

    import json
    from rest_framework.decorators import api_view,permission_classes
    from rest_framework.response import Response
    from rest_framework.permissions import IsAuthenticated, AllowAny
    from rest_framework import status
    from core.models import Order, Laundry
    from .serializers import OrderSerializer, SignUpSerializer
    from django.views.decorators.csrf import ensure_csrf_cookie,csrf_exempt, csrf_protect
    from rest_framework.authtoken.models import Token
    from django.contrib.auth import authenticate,logout, login,get_user_model


    @api_view(['POST'])
    @permission_classes([AllowAny])
    @ensure_csrf_cookie
    def user_login_token(request):
        """user login api"""
        if request.method == 'POST':
            email = request.data.get('Email')
            password = request.data.get('Password')
            current_user =  authenticate(request, username=email, password=password)
            if current_user:
                login(request, current_user)
                token, created = Token.objects.get_or_create(user=current_user)
                response = Response({'token': token.key, 'SuperRole': current_user.is_superuser}, status=status.HTTP_200_OK)
                return response
            return Response({'error': 'Invalid credentials'}, status=status.HTTP_400_BAD_REQUEST)

Вот мой код, прослушивающий, когда пользователь отправляет форму (нажимает кнопку входа):

    const loginForm = document.querySelector('form');
    loginForm.addEventListener('submit', async(event) => {
        event.preventDefault();
    
        const email = document.getElementById('email').value;
        const password = document.getElementById('password').value;
        const csrfToken = document.querySelector('meta[name="csrf-token"]').content;
        try {
            const response = await fetch('http://127.0.0.1:8000/api/v1/token/login', {
                method: 'POST',
                headers: {
                    'Content-Type': 'application/json',
                    'X-CSRFToken': csrfToken,
                },
                body: JSON.stringify({
                    Email: email,
                    Password: password
                }),
                credentials: 'include'
            });
    
            const data = await response.json();
    
            if (response.ok) {
                const token = data.token;
                localStorage.setItem('token', token);
                if (data.SuperRole) {
                    console.log("administrator login");
                } else {
                    window.location.href = '/dashboard/';
                }
            } else {
                console.error('Error:', data);
            }
        } catch (error) {
            console.error('Error:', error);
        }
    });

    function getCookie(name) {
        let cookieValue = null;
        if (document.cookie && document.cookie !== '') {
            const cookies = document.cookie.split(';');
            for (let i = 0; i < cookies.length; i++) {
                const cookie = cookies[i].trim();
                if (cookie.substring(0, name.length + 1) === (name + '=')) {
                    cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
                    break;
                }
            }
        }
        return cookieValue;
    }

Ниже показана моя приборная панель:

    @login_required
    def user_dashboard(request):
        return render(request, "user_dashboard.html")
Вернуться на верх