【问题标题】:How can I use rest serializer.ValidationError in django forms?如何在 django 表单中使用 rest serializer.ValidationError?
【发布时间】:2015-07-01 21:30:11
【问题描述】:

我是 Django 和 rest_framework 的新手。我有一个用于“新用户”页面的密码复杂性规则脚本。

如果我的复杂性要求满足需求,它将返回 true。否则它会引发serialiser.ValidationError

我复制了 Django 的忘记密码机制来应用我的密码规则。 当它引发错误时,应用程序会崩溃,如下所示。

Exception Type: ValidationError
Exception Value:    
[u"The two password fields didn't match."]

是否可以将序列化程序错误用作表单错误{{ form.new_password1.errors }}

【问题讨论】:

  • Django 有自己的验证错误类,您应该在表单中使用它。

标签: python django django-forms django-rest-framework


【解决方案1】:

可以编写自己的自定义异常处理程序,以首选格式返回错误。

官方documentation在页面底部说:

ValidationError 类应该用于序列化程序和字段验证,以及验证器类。调用时也会引发 带有 raise_exception 关键字参数的 serializer.is_valid: 通用视图使用 raise_exception=True 标志,这意味着您可以全局覆盖验证错误响应的样式 在您的 API 中。为此,请使用自定义异常处理程序,如所述 以上。

serializer.is_valid(raise_exception=True)

默认情况下,此异常会导致带有 HTTP 状态的响应 代码“400 错误请求”

请阅读here 以创建您的自定义处理程序。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-22
    • 2019-10-28
    • 2011-07-23
    • 2014-10-17
    • 2012-04-29
    • 2022-11-25
    • 2015-04-29
    相关资源
    最近更新 更多