django возвращает данные формата json в прототип ajax - PullRequest
4 голосов
/ 07 июля 2010

есть ли способ передать данные в формате json через django HttpResponse.Я пытаюсь вызвать представление через прототип ajax и вернуть данные в формате json.

Спасибо

Ответы [ 2 ]

14 голосов
/ 07 июля 2010

Вы можете сделать что-то подобное внутри своего приложения views.py

    import json

    def ajax_handler(req, your_parameter):

        json_response = json.dumps(convert_data_to_json)

        return HttpResponse(json_response,mimetype='application/json')
6 голосов
/ 07 июля 2010

Опираясь на ответ Ломбо, вы можете использовать метод request.is_ajax().Это проверяет, что заголовком HTTP_X_REQUESTED_WITH является XmlHttpRequest.

Это хороший способ избежать отправки ответа json на обычный GET - который, я думаю, в худшем случае просто сбивает с толку ваших пользователей, но также позволяет вам использовать тот же виддля запросов ajax и non-ajax.Этот подход облегчает создание приложений, которые изящно ухудшаются .

Например:

def your_view(request):
    data_dict = # get some data

    if request.is_ajax():
        # return json data for ajax request
        return HttpResponse(json.dumps(data_dict),mimetype='application/json')

    # return a new page otherwise
    return render_to_response("your_template.html", data_dict)

Этот подход особенно хорошо работает и для обработки форм.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...