我正在使用 django 表单。我将表单错误传递给模板,
return render_to_response(template_name, {'form':form})
在模板中,我需要将其转换为 js 字典,所以我使用了,
eval({{form.errors|safe}})
但无论我在模板中使用 form.errors 的任何地方,我都会得到 html 格式而不是字典。为什么 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__
方法返回ErrorDict.as_ul
.
如果要取回字典的默认字符串表示形式,请将其转换回字典: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。
我看不出您如何eval
在 django 模板中使用该方法。据我所知,甚至没有一个有效的标准 django 模板标签。
我认为您应该手动循环 dict 并相应地打印/生成 javascript 对象文字。