gpt4 book ai didi

python - 如何将错误消息附加到 django 中的 form.non_field_errors?

转载 作者:太空狗 更新时间:2023-10-29 20:37:29 26 4
gpt4 key购买 nike

我有一个包含多个字段的表单。我对每个字段都有单独的验证检查,通过表单验证完成。然而,在将用户重定向到不同的 View 之前,我还需要检查是否填写了几个字段。我希望我能以某种方式将错误附加到 forms.non_field_errors,因为它不是针对特定字段的,但我不确定正确的语法是什么。我上网查了一下,发现..

form.errors['__all__'] = form.error_class(["error msg"])

这会显示错误消息,但它似乎也弄乱了其他页面,如果我单击其他任何内容,就会显示错误消息。

我试过了

form._errors[NON_FIELD_ERRORS] = form.error_class()

这会导致“NoneType”对象对我来说没有属性“setdefault”错误。

我试过了

form.non_field_errors().append("Please complete your profile in order to access the content.")

这似乎没有做任何事情,我在 View 上看不到错误消息。

执行此操作的最佳方法是什么?理想情况下,我不想用表单的干净方法来做。我觉得我应该能够将错误附加到 View 中的表单。

最佳答案

  1. 调用 full_clean(),这应该会初始化 form._errors。这一步很关键,不做就不行。

  2. 制作错误列表,它需要一个消息列表,将其实例化为:error_list = form.error_class(['your error messages'])

  3. 将错误列表分配给 NON_FIELD_ERRORS,您必须从 django.forms.forms 导入 NON_FIELD_ERRORS,然后这样分配:form._errors[NON_FIELD_ERRORS] = error_list

这是一个 shell 的演示:

In [1]: from bet.forms import BetForm

In [2]: from django.forms.forms import NON_FIELD_ERRORS

In [3]: form = BetForm()

In [4]: form.full_clean()

In [5]: form._errors[NON_FIELD_ERRORS] = form.error_class(['your error messages'])

In [6]: form.non_field_errors()
Out[6]: [u'your error messages']

关于python - 如何将错误消息附加到 django 中的 form.non_field_errors?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8598247/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com