为什么django form.errors显示为字符串



我使用的是django表单。我将表单错误作为传递给模板

return render_to_response(template_name, {'form':form})

在模板中,我需要将其转换为js字典,所以我使用

eval({{form.errors|safe}})

但无论我在哪里使用模板中的form.errors,我都会得到html格式,而不是字典。为什么django表单显示为字符串而不是字典。有没有办法使用form.errors.的字典版本

它显示为无序列表,因为错误集合的ErrorDict.__unicode__方法返回CCD_ 2的值。

如果要返回字典的默认字符串表示,请将其强制转换回字典:dict(form.errors)。现在,您将不再获得HTML格式的无序列表。

更新

如果您试图用JS表示Python字典,请保持简单,并将字典对象编码为JSON。所以在你看来:

from django.utils import simplejson
errors = simplejson.dumps(form.errors)

查看django的源代码,错误类型应该是django.forms.util.ErrorDict.

它有以下两个方法,可能对您的案例很有意思:as_text和as_ul。

我不知道你怎么能在django模板中使用eval方法。据我所知,甚至没有一个有效的标准django模板标签。

我认为您应该手动循环dict并相应地打印/生成javascript对象文本。

最新更新