Как избежать ограничений списка QueryDict в Django - PullRequest
4 голосов
/ 02 сентября 2011

Я пытаюсь отправить данные с веб-страницы в представление django, чтобы сохранить их как сериализованный json в базу данных.Если возможно, я бы хотел избежать объекта QueryDict в django и просто прочитать запрос с помощью 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

Ответы [ 3 ]

5 голосов
/ 02 сентября 2011

Я сомневаюсь, что можно заставить django избегать создания QueryDict, но вы можете игнорировать его (из iphone JSON POST-запрос к серверу Django создает QueryDict в QueryDict ): def view_example(request): data=simplejson.loads(request.raw_post_data)

4 голосов
/ 02 сентября 2011

Вы пробовали методы QueryDict.lists () или QueryDict.dict ()? https://docs.djangoproject.com/en/dev/ref/request-response/#querydict-objects

1 голос
/ 02 сентября 2011

Вы можете попробовать 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')

это не лучшая практика, но этоу меня иногда отлично работает.

...