MPa*_*gan 4 django bad-request fetch django-rest-framework reactjs
我正在开发一个使用 openweathermap api 的简单 Web 应用程序。有一个对视图的 api 调用,该视图返回 api 数据,并显示用户输入的特定城市的天气温度和描述。
下面的 api 调用是对新功能的另一个调用,该新功能允许用户保存他们选择的特定天气数据。它从状态中获取 temp 和 desc,并将其发送到后端视图。然后,该视图将该数据保存到数据库中,并返回一个响应,然后我将使用该响应在同一 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);
});
}
Run Code Online (Sandbox Code Playgroud)
看法
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)
Run Code Online (Sandbox Code Playgroud)
模型
from django.db import models
class Weather(models.Model):
temperature = models.IntegerField(null=False, default=1)
description = models.CharField(max_length=50)
Run Code Online (Sandbox Code Playgroud)
序列化器类
from .models import Weather
from rest_framework import serializers
class WeatherSerializer(serializers.ModelSerializer):
class Meta:
model = Weather
fields = ('temperature', 'description')
Run Code Online (Sandbox Code Playgroud)
如果不知道模型和序列化器定义,就很难判断。
但由于它显然似乎是序列化器验证错误,因此您可以使用serializer.errors
field 检查序列化器抛出的错误。
if serializer.is_valid():
...
return Response(WeatherSerializer(weather).data, status=status.HTTP_201_CREATED)
print(serializer.errors)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
14849 次 |
最近记录: |