Я продолжаю получать ошибку 403 forbidden в Django
Проблема 1: Я создал приложение для заметок. Я сделал функцию входа, которая регистрирует людей. Я продолжаю получать ошибку после того, как я вхожу в систему и пытаюсь создать новую заметку, она говорит "403 запрещенная ошибка" в консоли. Но если я не вхожу в систему, все работает отлично. Вот код бэкенда :
@api_view(["POST"])
def login_view(request):
data = request.data
username = data["username"]
password = data["password"]
if request.user.is_authenticated:
return Response("hpr")
else:
user = authenticate(request, username=username, password=password)
if user is not None:
login(request, user)
return Response("hpr")
return Response("An error occured, please try again later.")
это представление входа в систему. Я создал модель с внешним ключом, это тоже может быть проблемой.
class Note(models.Model):
body = models.TextField(null=True, blank=True)
updated = models.DateTimeField(auto_now=True)
author = models.ForeignKey(User, related_name="notes", on_delete=models.CASCADE, null=True)
created = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.body[0:50]
вот представление, которое создает заметку :
@api_view(['POST'])
def createNote(request):
data = request.data
note = Note.objects.create(
body=data['body'],
)
serializer = NoteSerializer(note, many=False)
return Response(serializer.data)
Проблема 2: У меня есть еще одно сомнение. У меня есть функция, которая получает заметки из базы данных и отображает их. Я сделал так, чтобы сериализованная функция получала все поля модели заметок. Но когда я пытаюсь получить доступ к полю "author", я получаю пустой массив из фронтенда (я использую react js).
@api_view(["GET"])
def getNotes(request):
notes = Note.objects.all().order_by("-updated")
serializer = NoteSerializer(notes, many=True)
return Response(serializer.data)
Я также могу подтвердить, что это не проблема фронтенда, я протестировал фронтенд с console.log
и он работает.
Причина проблемы 1 : После тестирования с помощью postman, я обнаружил, что это проблема с токенами csrf! Я не уверен, как это исправить. Пожалуйста, помогите мне.
Попробовать
from django.views.decorators.csrf import csrf_exempt
@csrf_exempt
@api_view(['POST'])
def createNote(request):
data = request.data
note = Note.objects.create(
body=data['body'],
)
serializer = NoteSerializer(note, many=False)
return Response(serializer.data)