我正在尝试将数据从网页发送到django视图,以便将其保存为序列化的json到数据库。如果可能的话,我想避免使用django的QueryDict对象,只需用simplejson读取请求,展平并保存到数据库中。发送数据的最佳方法是什么,这样简单的json可以压扁它?
var languages = {};
languages['english'] = ['mark', 'james'];
languages['spanish'] = ['amy', 'john'];
$.ajax({
type: 'POST',
url: '/save/',
data: languages,
dataType: 'json'
});
if request.is_ajax() and request.method == 'POST':
for key in request.POST:
print key
valuelist = request.POST.getlist(key)
print valuelist
答案 0 :(得分:5)
我怀疑是否有可能让django避免创建QueryDict,但你可以忽略它(来自iphone Json POST request to Django server creates QueryDict within QueryDict):
def view_example(request):
data=simplejson.loads(request.raw_post_data)
答案 1 :(得分:4)
您是否尝试过QueryDict.lists()或QueryDict.dict()方法? https://docs.djangoproject.com/en/dev/ref/request-response/#querydict-objects
答案 2 :(得分:1)
您可以尝试http://code.google.com/p/jquery-json/并在客户端制作json字符串。
var languages = {};
languages['english'] = ['mark', 'james'];
languages['spanish'] = ['amy', 'john'];
var json_languages = $.toJSON(languages);//'{"plugin":"jquery-json","version":2.2}'
// '{"spanish": ["amy", "john"], "english": ["mark", "james"]}'
$.post('/save/', {data: json_languages});
仅供参考:
if request.is_ajax() and request.method == 'POST':
data = request.POST.get('languages')
这不是最好的做法,但有时它对我有效。