Django KeyError и MultiValueDictKeyError при попытке POST
Я пытаюсь сделать POST запрос к Django через Vue JS, этот POST запрос - обзор города,
Когда я пытаюсь выполнить POST через Vue JS, я не получаю ответа, поэтому я попробовал использовать Django API напрямую и каждый раз получаю одну и ту же ошибку MultiValueDictKeyError.
Я пытаюсь отправить запрос так, чтобы каждый отзыв был связан с определенным городом, поэтому мне нужно прикрепить к нему ID города, чтобы я мог перейти к этому городу через API.
Вот мой views.py файл:
from django.shortcuts import render
from rest_framework.views import APIView
from rest_framework.response import Response
from .models import City, Review
from .serializers import CitySerializer, ReviewSerializer
from rest_framework.parsers import FormParser, MultiPartParser, JSONParser
from django.http import HttpResponse
class LatestCityList(APIView):
parser_classes = (FormParser, MultiPartParser)
def get(self, request, format=None):
cities = City.objects.all()
serializer = CitySerializer(cities, many=True)
return Response(serializer.data)
def post(self, request, format=None):
Name = request.data['Name']
Picture = request.data['Picture']
Description = request.data['Description']
slug = Name.lower().replace(' ', '_')
City.objects.create(Name=Name, Picture=Picture, Description=Description, slug=slug)
return HttpResponse({'message': 'City created successfully'}, status=201)
class CityDetail(APIView):
parser_classes = (FormParser, MultiPartParser)
def get(self, request, slug, format=None):
city = City.objects.get(slug=slug)
serializer = CitySerializer(city)
return Response(serializer.data)
class CityReviewList(APIView):
parser_classes = (FormParser, MultiPartParser)
def get(self, request, slug, format=None):
city = City.objects.get(slug=slug)
reviews = Review.objects.filter(City=city)
serializer = ReviewSerializer(reviews, many=True)
return Response(serializer.data)
def post(self, request, slug, format=None):
city = City.objects.get(slug=slug)
id = City.objects.get(slug=slug).id
Review = request.data['Review']
TravelerName = request.data['TravelerName']
Picture = request.data['Picture']
slug = TravelerName.lower().replace(' ', '_')
Review.objects.create(City=city, Review=Review, TravelerName=TravelerName, Picture=Picture, slug=slug)
return HttpResponse({'message': 'Review created successfully'}, status=201)
Вы видите, что у меня есть POST для LastestCityList, и он отлично работает как из API, так и из Vue JS. Я попытался применить ту же концепцию для Review и не смог разобраться с этим, я знаю, что проблема связана с City, но я перепробовал все, чтобы отладить это, но все равно каждый раз получаю ошибку.
Это мой serializers.py файл:
from rest_framework import serializers
from .models import City, Review
class CitySerializer(serializers.ModelSerializer):
class Meta:
model = City
fields = ('id', 'Name', 'Picture', 'Description',
'get_absolute_url', 'get_image', 'slug')
class ReviewSerializer(serializers.ModelSerializer):
class Meta:
model = Review
fields = ('id', 'City', 'Review', 'TravelerName', 'slug',
'Picture', 'get_absolute_url', 'get_image')