gpt4 book ai didi

django - 将错误添加到 Django 表单错误.__all__

转载 作者:行者123 更新时间:2023-12-03 15:06:05 48 4
gpt4 key购买 nike

清理数据后如何在表单顶部添加错误?我有一个对象需要对外部应用程序(谷歌地图)进行 REST 调用作为预保存条件,这可能会失败,这意味着我需要我的用户更正表单中的数据。因此,我清理数据,然后尝试保存并在保存不起作用时添加到表单错误中:

if request.method == "POST":
#clean form data
try:
profile.save()
return HttpResponseRedirect(reverse("some_page", args=[some.args]))
except ValueError:
our_form.errors.__all__ = [u"error message goes here"]
return render_to_response(template_name, {"ourform": our_form,},
context_instance=RequestContext(request))

这未能在我的单元测试中返回错误文本(在 {{form.non_field_errors}} 中寻找它),然后当我通过调试器运行它时,当它们到达 render_to_response 行时,错误没有被添加到表单错误字典中, our_form 树中的任何其他地方也没有。为什么这不起作用?清理表格后,我应该如何在表格顶部添加错误?

最佳答案

在 Django 1.7 或更高版本中,我会这样做:

form.add_error(field_name, "Some message")

方法 add_error 在 1.7 中添加。 form变量是我要操作的形式, field_name是具体的字段名或 None如果我想要一个与特定字段无关的错误。

在 Django 1.6 中,我会执行以下操作:
from django.forms.forms import NON_FIELD_ERRORS

errors = form._errors.setdefault(field_name, form.error_class())
errors.append("Some message")

在上面的代码中 form是我要操作的表格, field_name是我要添加错误的字段名称。 field_name可以设置为 NON_FIELD_ERRORS添加与特定字段无关的错误。我用 form.error_class()生成错误消息的空列表。这就是 Django 1.6 在内部创建一个空列表而不是实例化 ErrorList() 的方式。直接地。

关于django - 将错误添加到 Django 表单错误.__all__,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2235146/

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