关于django form.errors的问题,如何获取原始错误信息
Django文档上说,
可以通过访问错误属性来获取错误信息的字典:
f.errors {'sender': ['请输入一个有效的电子邮件地址。'], 'subject': ['这个字段是必填的。']}
但是,当我尝试打印 forms.errors 时,却得到了 HTML 代码。
def login(request):
if request.method == "GET":
return render(request, r"login.html")
else:
form = LoginForm(request.POST)
if form.is_valid():
return HttpResponse("valid")
else:
print form.errors
return HttpResponse("Invalid")
Django version 1.6.4, using settings 'test_proj.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.
<ul class="errorlist"><li>username<ul class="errorlist"><li>Ensure this value ha
s at most 3 characters (it has 6).</li></ul></li></ul>
我需要获取原始的错误信息,以便显示在 AJAX 消息中,比如说:
response_json = {"status": "error", "content": "Username is too short"}
如果还有其他方法可以获取原始错误信息,请告诉我。谢谢!
1 个回答
4
这其实是因为调用了 print
这个函数:它会自动把内容转换成字符串,而错误列表类的 __str__
方法 会调用它的 as_ul
方法来输出成 HTML 格式——这样你就可以在模板中简单地用 {{ form.errors }}
来显示错误列表。
不过,实际上这个对象的内容并不是 HTML 格式的,你可以通过执行 print repr(form.errors)
来查看它的真实内容。