【问题标题】:Django form validation: get errors in JSON formatDjango 表单验证:获取 JSON 格式的错误
【发布时间】:2014-07-06 05:42:00
【问题描述】:

我有这个非常简单的 Django 表单

from django import forms

class RegistrationForm(forms.Form):
    Username = forms.CharField()
    Password = forms.CharField()

我手动管理,不使用模板引擎。相反,我使用 ajax POST 发送数据并期望收到返回的验证错误。当我在使用其他框架时,我曾经在键值对中收到 JSON 格式的验证错误(键是包含错误的字段的名称,值是错误消息)。

{
  Username: "This field is required.",
  Password: "This field is required.",
}

我试图在 Django 中实现相同的结果,但我不明白如何访问原始错误消息(相对于单个字段)并将它们本地化。

form.errors 提供对 HTML 代码的访问权限(如下所述:displaying django form validation errors for ModelForms)。我不需要那个。我更喜欢form.Username.validationError这样的东西:这样的东西存在吗?

如果是,另外我还想知道验证错误消息是否会自动翻译成用户语言,如果没有,最好的方法。

【问题讨论】:

标签: python json django validation


【解决方案1】:

Django 让你发送forms errors as Json。您只需要使用以下形式的错误form.errors.as_json()

我必须说是对图书馆的一个很好的补充。

更新:更新链接感谢 donrondadon 对此线程的评论。

【讨论】:

【解决方案2】:
#from django.http import JsonResponse    

return JsonResponse({'success': False,
                      'errors': [(k, v[0]) for k, v in form.errors.items()]})

【讨论】:

  • 这个变体代码对我有用:return JsonResponse({'error': [{"field":k, "message": v[0]} for k, v in form.errors.items()] })
  • 我认为既然 Django 将错误放在一个列表中,这会更好:[{k: [b]for b in v} for k, v in frm.errors.items()]
猜你喜欢
  • 1970-01-01
  • 2016-03-20
  • 2011-02-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-22
  • 2013-01-17
  • 1970-01-01
相关资源
最近更新 更多