4

我正在尝试将数据从网页发送到 django 视图,以将其作为序列化 json 保存到数据库中。如果可能的话,我想避免使用 django 的 QueryDict 对象,只使用 simplejson 读取请求,展平并保存到数据库中。发送数据以便 simplejson 可以展平数据的最佳方式是什么?

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
4

3 回答 3

5

我怀疑是否有可能让 django 避免创建 QueryDict,但您可以忽略它(从iphone Json POST 请求到 Django 服务器在 QueryDict 中创建 QueryDict):

def view_example(request):
    data=simplejson.loads(request.raw_post_data)

于 2011-09-02T04:01:47.867 回答
4

您是否尝试过 QueryDict.lists() 或 QueryDict.dict() 方法?https://docs.djangoproject.com/en/dev/ref/request-response/#querydict-objects

于 2011-09-02T02:02:56.580 回答
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')

这不是最佳做法,但有时对我来说效果很好。

于 2011-09-02T08:17:06.243 回答