为什么我会收到 400 错误请求错误?使用 Django Rest 框架作为后端并使用 React 作为我的 Web 应用程序的前端
Why am I getting a 400 bad request error? Using the Django Rest framework as a backend and React as a frontend for my web application
我正在开发一个使用 openweathermap api 的简单 Web 应用程序。有一个 api 调用 returns api 数据的视图,并显示用户输入的特定城市天气的温度和描述。
下面的 api 调用是对一项新功能的另一个调用,该功能允许用户保存他们选择的特定天气数据。它从状态中获取 temp 和 desc,并将其发送到后端视图。然后视图将该数据保存到数据库中,然后 returns 一个响应,我将使用它在同一个 api 调用中显示数据。它给我一个 400 错误。我在控制台记录了 temp 和 desc,它们都正确打印出来,所以我没有向后端发送未定义的数据。难道是我序列化数据的方式?
前端api调用
const saveWeather = (temperature, description) => {
const requestOptions = {
method: "POST",
headers: { "Content-Type": "application/json"},
body: JSON.stringify({
temperature: temperature,
description: description
})
};
fetch("/api/savedweather", requestOptions)
.then((response) => {
if (response.ok) {
console.log("OK");
}
})
.catch((error) => {
console.log(error);
});
}
查看
class SaveWeather(APIView):
serializer_class = WeatherSerializer
def post(self, request, format=None):
serializer = self.serializer_class(data=request.data)
if serializer.is_valid():
temperature = serializer.data.get('temperature')
description = serializer.data.get('description')
weather = Weather(temperature=temperature, description=description)
weather.save()
return Response(WeatherSerializer(weather).data, status=status.HTTP_201_CREATED)
return Response({'Bad Request': "Invalid Data..."}, status=status.HTTP_400_BAD_REQUEST)
型号
from django.db import models
class Weather(models.Model):
temperature = models.IntegerField(null=False, default=1)
description = models.CharField(max_length=50)
序列化器Class
from .models import Weather
from rest_framework import serializers
class WeatherSerializer(serializers.ModelSerializer):
class Meta:
model = Weather
fields = ('temperature', 'description')
不知道模型和序列化器定义就很难分辨。
但由于它显然似乎是序列化器验证错误,您可以使用 serializer.errors
字段检查序列化器抛出的错误。
if serializer.is_valid():
...
return Response(WeatherSerializer(weather).data, status=status.HTTP_201_CREATED)
print(serializer.errors)
我正在开发一个使用 openweathermap api 的简单 Web 应用程序。有一个 api 调用 returns api 数据的视图,并显示用户输入的特定城市天气的温度和描述。
下面的 api 调用是对一项新功能的另一个调用,该功能允许用户保存他们选择的特定天气数据。它从状态中获取 temp 和 desc,并将其发送到后端视图。然后视图将该数据保存到数据库中,然后 returns 一个响应,我将使用它在同一个 api 调用中显示数据。它给我一个 400 错误。我在控制台记录了 temp 和 desc,它们都正确打印出来,所以我没有向后端发送未定义的数据。难道是我序列化数据的方式?
前端api调用
const saveWeather = (temperature, description) => {
const requestOptions = {
method: "POST",
headers: { "Content-Type": "application/json"},
body: JSON.stringify({
temperature: temperature,
description: description
})
};
fetch("/api/savedweather", requestOptions)
.then((response) => {
if (response.ok) {
console.log("OK");
}
})
.catch((error) => {
console.log(error);
});
}
查看
class SaveWeather(APIView):
serializer_class = WeatherSerializer
def post(self, request, format=None):
serializer = self.serializer_class(data=request.data)
if serializer.is_valid():
temperature = serializer.data.get('temperature')
description = serializer.data.get('description')
weather = Weather(temperature=temperature, description=description)
weather.save()
return Response(WeatherSerializer(weather).data, status=status.HTTP_201_CREATED)
return Response({'Bad Request': "Invalid Data..."}, status=status.HTTP_400_BAD_REQUEST)
型号
from django.db import models
class Weather(models.Model):
temperature = models.IntegerField(null=False, default=1)
description = models.CharField(max_length=50)
序列化器Class
from .models import Weather
from rest_framework import serializers
class WeatherSerializer(serializers.ModelSerializer):
class Meta:
model = Weather
fields = ('temperature', 'description')
不知道模型和序列化器定义就很难分辨。
但由于它显然似乎是序列化器验证错误,您可以使用 serializer.errors
字段检查序列化器抛出的错误。
if serializer.is_valid():
...
return Response(WeatherSerializer(weather).data, status=status.HTTP_201_CREATED)
print(serializer.errors)