reactjs - 序列化程序无法从 React 正确读取 POST 数据到 Django Rest 框架
问题描述
将 Post 数据从 React 前端发送到 Django rest 框架。但似乎序列化程序只读取第一个元素。如何提取所有信息?
模型.py
class Company(models.Model):
name = models.CharField(max_length=30, blank= False, null=False, unique=True)
established = models.IntegerField()
origin = models.CharField(max_length=64, null=False, blank=False)
序列化程序.py
from rest_framework import serializers
from .models import Company,Brand
class CompanySerializer(serializers.ModelSerializer):
class Meta:
model = Company
fields = ['id', 'name', 'established', 'origin']
class AddCompanySerializer(serializers.ModelSerializer):
class Meta:
model = Company
fields = ['name', 'established', 'origin']
extra_kwargs = {'name':{'required':False},'established':{'required':False},'origin':{'required':False}}
React Frontend(发送带有数据的 post 请求)
handleOnSubmit = (event)=>{
const requestOptions = {
method : "POST",
headers : {"Content-Type":"application/json"},
body : JSON.stringify({
name:this.state.name,
est:this.state.est,
org:this.state.org
}),
};
fetch("api/add-company", requestOptions).then((response)=>{return response.json()}).then((data)=>{
console.log(data)
})
event.preventDefault();
}
休息框架功能
@api_view(['POST'])
def add_company(request):
serializer = AddCompanySerializer(data=request.data)
if serializer.is_valid():
print(serializer.data.get('name'))
print(serializer.data.get('est'))
print(serializer.data)
print(serializer)
return Response(serializer.data, status=status.HTTP_200_OK)
print(serializer.errors)
return Response({"Not working"}, status=status.HTTP_400_BAD_REQUEST)
打印语句的终端输出
雀巢
没有任何
{'名称':'雀巢'}
AddCompanySerializer(data={'name': 'Nestle', 'est': '1866', 'org': 'Switzerland'}): name = CharField(max_length=30, required=False, validators=[<UniqueValidator(queryset =Company.objects.all())>]) 已建立 = IntegerField(required=False) origin = CharField(max_length=64, required=False) [15/Jun/2021 13:52:44] "POST /api/add -公司 HTTP/1.1" 200 17
解决方案
推荐阅读
- log4j - Log4J 更改配置运行时
- python - 使用 Python 从 Wikipedia 抓取表格
- java - Kotlin BufferReader 没有得到服务器响应
- javascript - Discord.js v12 禁止命令
- linux - Linux bash time 命令的准确性如何?
- python - 在 python 类中初始化多个属性的最佳方法
- javascript - Chrome 扩展程序:它没有显示弹出窗口并且不能像示例中那样删除规则
- php - Mysqli_connect(): (HY000/2002): 在 SYNOLOGY NAS 上建立网站时连接被拒绝
- sql - 如何在 bigquery 中使用 rowid 按日期获取数据集的第一个值,并将给定日期的所有其他值设为 0
- r - 比较行并用数据表中的先前值填充空白