我目前正在使用Django REST Framework作为API后端的Django应用程序,在尝试将JSON数据发送到服务器时,我不断收到400个错误。
我已经确保JSON文件中的所有字段名称都与我的API中的字段名称匹配,但是除此之外,除了对代码进行的少量修改外,我不确定还有其他尝试方法(例如,在die
模型上将DieMeasurement
字段设置为允许空白和空条目)。
这是我用来发送数据的脚本:
def post_die_measurement():
with open('file.json') as obj:
data = json.load(obj)
requests.post(api_url_base + 'api-page/', data=data, headers={'Authorization': 'Token ' + api_token})
以下是与数据相关的两个相关模型:
class DieMeasurement(models.Model):
# ...
# fields
# ...
die = models.ForeignKey(Die, on_delete=models.CASCADE, blank=True, null=True)
class Result(models.Model):
# ...
# fields
# ...
die_measurement = models.OneToOneField(DieMeasurement, on_delete=models.CASCADE, related_name='results')
这是这些型号的我的序列化器:
class ResultSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = views.Result
fields = ('set_v', 'dmm_value', 'actual_v', 'actual_a', 'time')
class DieMeasurementSerializer(serializers.HyperlinkedModelSerializer):
results = ResultSerializer(many=False)
class Meta:
model = views.DieMeasurement
fields = ('notes', 'tap', 'dmm_mode', 'laser_power', 'timestamp', 'die', 'results')
def create(self, validated_data):
results_data = validated_data.pop('results')
measurement = DieMeasurement.objects.create(**validated_data)
Result.objects.create(die_measurement=measurement, **results_data)
return measurement
我发送的JSON数据的格式如下:
{
"notes" : "",
"tap" : 2,
...
"results":{
"set_v": [...]
"set_a": [...]
...
}
}
我的想法是,上面的脚本应加载与上述结构类似的JSON文件,以便当我将数据发布到API时,它会从文件中提取结果字段,然后创建一个具有结果对象及其链接的结果数据。相反,我遇到了前面提到的400错误。谁能帮我弄清楚我的方法出了什么问题?
答案 0 :(得分:0)
由于声誉我无法对此帖子发表评论,但是我想提一下,如果客户端在其他端口上运行,则可能与CORS标头相关。
如果最终成为问题,有一个软件包https://pypi.org/project/django-cors-headers/可以帮助您解决此问题。