reactjs - 为什么我收到 400 bad request 错误?使用 Django Rest 框架作为后端并使用 React 作为我的 Web 应用程序的前端
问题描述
我正在开发一个使用 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);
});
}
看法
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)
序列化器类
from .models import Weather
from rest_framework import serializers
class WeatherSerializer(serializers.ModelSerializer):
class Meta:
model = Weather
fields = ('temperature', 'description')
解决方案
如果不知道模型和序列化程序定义,就很难分辨。
但由于它显然似乎是 serializaer 验证错误,因此您可以使用serializer.errors
字段检查 serializaer 抛出的错误。
if serializer.is_valid():
...
return Response(WeatherSerializer(weather).data, status=status.HTTP_201_CREATED)
print(serializer.errors)
推荐阅读
- sql-server - 如何处理 SQL Server 数据库项目中模式和用户的顺序?
- python - Matplotlib 一些 LaTeX 符号不会随着图形大小的增加而缩放
- python - Flask_login - LOGIN_DISABLED = True,在 LoginManager 启动后似乎不起作用
- r - 每 15 分钟间隔的最接近值
- c# - Image 元数据是如何传递的?
- c - 即使没有指定返回变量或值,C 编译器如何准确猜测应该返回哪个值?
- javascript - 基于相同的随机排序系统对两个数组进行排序
- html - 从网站上刮桌子
- vue.js - vuejs中来自db的图像url变量
- c - 为什么这个函数的时间复杂度不是 O(m!)?