我正在使用django表单。我将表单错误传递给模板as,
return render_to_response(template_name, {'form':form})
在模板中,我需要将其转换为js字典,所以我使用了
eval({{form.errors|safe}})
但无论我在模板中使用form.errors,我都会得到html格式而不是字典。为什么django表单显示为字符串而不是字典。有没有办法使用form.errors的字典版本。
答案 0 :(得分:3)
它显示为无序列表,因为error collection's ErrorDict.__unicode__
method返回ErrorDict.as_ul
。
如果要返回字典的默认字符串表示形式,请将其强制转换为字典:dict(form.errors)
。现在,您将不再获得HTML格式的无序列表。
如果您尝试在JS中表示Python字典,那么请保持简单并将字典对象编码为JSON。所以在你看来的某个地方:
from django.utils import simplejson
errors = simplejson.dumps(form.errors)
答案 1 :(得分:0)
查看django的源代码,错误的类型应为django.forms.util.ErrorDict。
对于您的案例,有以下两种方法可能会有趣:as_text和as_ul。
我看不出你如何在django模板中使用eval
方法。据我所知,甚至没有一个有效的标准django模板标签。
我认为你应该手动遍历dict并相应地打印/生成javascript对象文字。