首页 > 解决方案 > Django 从 is_valid 打印无效值

问题描述

我有一个 Django 视图,它将保存来自 Post 请求的值

form=MyForm(request.POST)
if form.is_valid():
    post = form.save(commit=False)
    post.added_on = timezone.now()
    post.save()
return redirect(index)

如何打印导致 is_valid() 测试失败的无效值?

标签: django

解决方案


您可以使用表单具有的.errors属性 [Django-doc] 。它是一个类似字典的对象,将字段名称映射到错误列表。对于某些字段,该值可能有多个错误(例如,密码可能太短,并且不包含数字)。

如文档中所述:

返回将字段映射到其原始 ValidationError 实例的字典。

>>> f.errors.as_data()
{'sender': [ValidationError(['Enter a valid email address.'])],
'subject': [ValidationError(['This field is required.'])]}

该对象还有一些额外的方法,例如.errors.as_json[Django-doc],它们会将错误转换为 JSON blob。


推荐阅读