关于django form.errors的问题,以获取原始错误消息

时间:2014-05-01 08:26:52

标签: python django forms

django文件说 https://docs.djangoproject.com/en/dev/ref/forms/api/#django.forms.Form.errors

访问errors属性以获取错误消息字典:

  
    
      

f.errors       {'发件人':['输入有效的电子邮件地址。'],'主题':['此字段是必填字段。' ]}

    
  

然而,当我尝试打印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 个答案:

答案 0 :(得分:4)

这只是调用print的人工制品:隐含地转换为字符串,而ErrorList类的__str__ method调用其as_ul方法输出为HTML - 这样您就可以输出模板中的错误列表只需执行{{ form.errors }}

对象本身的内容不是HTML格式,你可以通过print repr(form.errors)看到它。