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 и пароль.