我正在尝试使用Ajax发布到Django并将JSON信息保存在数据库中。 当我只有一个对象进行字符串化和发送时,这种方法有效,但是当我添加另一个对象时,我收到400 Bad请求错误。我相信这可能是由于我的模型/视图设置方式?
这是我的代码: JSON
var testData2 = '[{"id" : "Home", "parent" : "#", "text" : "Home"}, {"id" : "node3", "parent" : "#", "text" : "test worked yay"}, {"id" : "node2", "parent" : "Home", "text" : "hmm. weird"}]';
链接到"保存更改"按钮
$("#postChange").click(function(){
$.ajax({
url:/snippets/,
type:"POST",
data:testData2,
contentType:"application/json; charset=utf-8",
dataType:"json",
})
});
Django模型
from django.db import models
class StoringJSON(models.Model):
id = models.TextField(primary_key='true', default='node_1')
parent = models.CharField(max_length=30, default='#')
text = models.CharField(max_length=30, default='Node')
Django View
@api_view(['GET', 'POST'])
def tree_list(request):
"""
List all snippets, or create a new tree.
"""
if request.method == 'GET':
trees = StoringJSON.objects.all()
serializer = TreeSerializer(trees, many=True)
return Response(serializer.data)
elif request.method == 'POST':
serializer = TreeSerializer(data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
串行:
from rest_framework import serializers
from treetool.models import StoringJSON
class TreeSerializer(serializers.ModelSerializer):
class Meta:
model = StoringJSON
fields = ('id', 'parent', 'text')
对于更多上下文,我使用jsTree jQuery插件。
感谢您的帮助,如果您需要更多信息来帮助我,请告诉我,我会及时回复。
答案 0 :(得分:0)
如果您要序列化多个,则可能需要再次将many=True
传递给TreeSerializer
(在POST
支票内)。
另外,我很惊讶传递primary_key='true'
的工作原理,应该写成primary_key=True
。