【问题标题】:How to serialize dictionary in django to render in Jquery [Level of question - Beginner]如何在 django 中序列化字典以在 Jquery 中呈现 [问题级别 - 初学者]
【发布时间】:2011-07-18 17:42:35
【问题描述】:

要序列化的字典 - 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);
                },

朋友们,现在我该怎么做呢?

【问题讨论】:

标签: jquery ajax django json serialization


【解决方案1】:
import json

data = json.dumps(errors)

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

您正在询问如何将字典转换为 JSON 对象,以便您的 jQuery/javascript 可以读取它。 json.dumps 允许这种情况发生。

【讨论】:

  • 作为一个“应该”在提问之前搜索类似问题的人,我认为在回答问题之前也应该搜索 :) 你的答案是这个问题的次优重复 -> stackoverflow.com/questions/986406/…跨度>
  • 所以你是说我不应该回答这个问题,因为另一个人回答了类似的问题?这对我来说没有意义。
【解决方案2】:

您需要在两个地方查找错误。

有“非字段错误”:

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})

【讨论】:

  • 我认为您没有得到我的问题...错误本身与其格式相比不是问题...
【解决方案3】:

这里不是很挑剔,但你真的验证过你的表单吗?

form.is_valid()

【讨论】:

  • @Sussagittikasusa - 不,在您调用 is_valid() 之前不会填充 form.errors。
猜你喜欢
  • 2010-09-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-12
  • 2010-11-08
  • 2021-07-01
  • 2020-06-28
相关资源
最近更新 更多