在Django中惯用处理form.errors

时间:2014-10-20 23:56:10

标签: django

我刚刚开始使用Django而且我正在验证表单输入。我有一些代码基本上是这样的:

if request.method == 'POST':
    form = RepairerForm(request.POST)
    if form.is_valid():

        ...
    else:
        return HttpResponse(form.errors)

要触发else子句,我在EmailField字段中输入一个无效的电子邮件地址。

我的问题是我不知道告诉用户他们输入无效的“正确”方式。 form.errors是一个字典,所以我想我可以将其转换为格式良好的列表,然后在我的模板中处理它,但它听起来很糟糕。此外,我还没有找到任何实际告诉您如何处理form.errors的教程。他们或多或少都假装它不存在。

我可以花一些时间尝试推出自己的解决方案,但我已经了解到Django几乎所有东西都有一个漂亮,干净的解决方案。我这次错了,还是应该将我的错误转换为字符串列表并在我的模板中循环?

1 个答案:

答案 0 :(得分:0)

我不知道为什么你说没有文档说明如何处理表单错误。标准form overview docs显示您到底要做什么。

关键是,只显示错误消息本身是无用的;您应该使用错误消息和用户输入的数据重新显示表单,以便用户可以更正他们需要的内容,然后重新提交。

如果您只显示{{ form.as_p }}的表单,则会自动显示每个字段及其错误;否则,您可以使用{{ form.my_field.errors }}{{ form.errors }}一次性显示每个。同样,在同一documentation page上完整地解释了这一点。