Django rest framwork POST запрос выдает ошибку запрета

Сначала я хочу сказать, что да, я искал ответы далеко и долго. Это очень распространенная ошибка. Это головная боль, и я надеюсь, что это просто небольшая ошибка, которую я упустил из виду. Регистрация пользователя работает, а вход пользователя в систему дает:

Forbidden: /api/login
[17/Nov/2022 19:37:51] "POST /api/login HTTP/1.1" 403 32

Из того, что я читаю, все дело в разрешениях, но я не знаю, как это исправить. Я следую этому руководству: https://www.youtube.com/watch?v=PUzgZrS_piQ

В файле settings.py у меня, например, есть:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'rest_framework',
    'corsheaders',
    'posts',
    'users',
]

MIDDLEWARE = [
    'corsheaders.middleware.CorsMiddleware',
]

AUTH_USER_MODEL = 'users.User'

CORS_ORIGIN_ALLOW_ALL = True
CORS_ALLOW_CREDENTIALS = True

В файле Views.py у меня есть:

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

#Create your views here.
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(user)

Models.py

from django.db import models
from django.contrib.auth.models import AbstractUser

# Create your models here.
class User(AbstractUser):
    name = models.CharField(max_length=255)
    email = models.CharField(max_length=255, unique=True)
    password = models.CharField(max_length=255)
    username = None

    USERNAME_FIELD = 'email'
    REQUIRED_FIELDS = []

Если есть вопросы о других файлах и данных в моем Django проекте, я с радостью их предоставлю.

Я пытался найти ошибку и посмотреть, какое решение есть у других. Похоже, что разрешение является ключом к исправлению этой проблемы. Я думал, что дал разрешение в файле settings.py.

Я ожидаю, что получу успешное сообщение при входе в систему как зарегистрированный пользователь, через postman, указав email и пароль.

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