Как сериализовать словарь в django для рендеринга в Jquery [Уровень вопроса — начальный]

Словарь для сериализации - form.errors

например Посмотреть -

form = PersonalForm(request.POST)
# errors = serializing function which serializes form.errors
data = errors 
#Is this the way to pass data? Not quite sure....
return HttpResponse(data,mimetype="application/json")

например javascript (при успешном выполнении запроса) -

function(responseData) {
     $('#errors_form').html(responseData);
                },

Теперь, как мне это сделать, друзья?


person Sussagittikasusa    schedule 19.03.2011    source источник
comment
Итак, как я могу улучшить свой вопрос?   -  person Sussagittikasusa    schedule 19.03.2011
comment
Трудно понять, что вы спрашиваете? В чем проблема? Что вы ожидаете и что видите?   -  person Brian Neal    schedule 19.03.2011
comment
Эй, я собираюсь удалить этот вопрос.... Я разместил здесь лучшую версию, если вы можете, пожалуйста, помогите... это сводит меня с ума!!   -  person Sussagittikasusa    schedule 19.03.2011
comment
stackoverflow.com/questions/5362501/   -  person Sussagittikasusa    schedule 19.03.2011
comment
Я все еще не понимаю, о чем вы спрашиваете. Вы пробовали? Что вы заметили? Что, по вашему мнению, должно было произойти, но не произошло?   -  person Brian Neal    schedule 19.03.2011


Ответы (3)


import json

data = json.dumps(errors)

return HttpResponse(data,mimetype="application/json")

Вы спрашиваете, как превратить словарь в объект JSON, чтобы ваш jQuery/javascript мог его прочитать. json.dumps позволяет это сделать.

person Auston    schedule 19.03.2011
comment
Поскольку нужно искать похожие вопросы, прежде чем задавать, я думаю, что нужно также искать, прежде чем отвечать на вопрос:) Ваш ответ является неоптимальным дубликатом этого -> stackoverflow.com/questions/986406/ - person Tommaso Barbugli; 21.03.2011
comment
Итак, вы говорите, что я НЕ должен был отвечать на этот вопрос, потому что другой человек ответил на аналогичный вопрос? Это не имеет смысла для меня. - person Auston; 21.04.2011

Вам нужно будет искать ошибки в двух местах.

Есть «ошибки, не связанные с полем»:

form.non_field_errors

И ошибки на основе поля, например поле имени:

form.name.errors

В зависимости от сложности формы вы можете ссылаться на ошибки как на отдельные ошибки в вашем json или создать небольшой скрипт Python, который их объединит. На самом деле я не запускал код, но думаю, что это может сработать для вас:

errors = []
errors = errors + form.non_field_errors

for field in form:
    errors = errors + field.errors

if len(errors) > 0 :
    data = json.dumps({"response_text": "Errors Detected", "errors" : errors})
person Tom Gruner    schedule 19.03.2011
comment
Я думаю, вы не поняли мой вопрос... проблема не столько в ошибках, сколько в их формате... - person Sussagittikasusa; 19.03.2011

Я не придирчив, но действительно ли вы проверяли свою форму?

form.is_valid()
person Davo    schedule 19.03.2011
comment
@Sussagittikasusa - нет, form.errors не заполняется, пока вы не вызовете is_valid(). - person Brian Neal; 20.03.2011