4

Webページから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サーバーへのクエリDict内に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 に答える