1

我正在使用 django 表单。我将表单错误传递给模板,

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

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

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

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

4

2 回答 2

5

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

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

更新

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

from django.utils import simplejson

errors = simplejson.dumps(form.errors)
于 2012-08-01T06:52:03.117 回答
0

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

其中有以下两种可能对您的情况感兴趣的方法:as_text 和 as_ul。

我看不出您如何eval在 django 模板中使用该方法。据我所知,甚至没有一个有效的标准 django 模板标签。

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

于 2012-08-01T06:19:30.880 回答