首页 > 解决方案 > 如何删除 Django 模型表单的内置错误列表?

问题描述

我在 Django 中制作了一个模型表单,使用户能够创建该模型的实例。一切都很好,保存一件事。Django 的内置错误列表很烦人。我希望这些错误在用户实际犯下该错误时显示出来。当我打开我的页面时,它看起来像这样 在此处输入图像描述

请帮助我如何暂时删除这些错误列表,以便当用户将输入字段留空时。它会自己弹出?

我不知道你是否需要这些代码来解决这个问题,但这里是:views.py 文件在这里

@login_required(login_url='/accounts/login/')
def article_create(request):
    article_form = ArticleForm(request.POST or None, request.FILES)
    if article_form.is_valid():
        instance = article_form.save(commit=False)
        instance.author = request.user
        article_form.save()
    return render(request, 'blog/article-create.html', {'form': article_form})

谢谢

标签: pythondjango

解决方案


您使用request.POST or None成语 - 我不喜欢,但没关系 - 用于 data 参数,但不用于 files 参数。由于您为文件传递了一个(空)dict,Django 将您的表单作为绑定,因此尝试验证它。

如果你坚持使用这个成语,你需要为两者都这样做:

article_form = ArticleForm(request.POST or None, request.FILES or None)

但实际上,更明确的是 Pythonic:

if request.method == 'POST':
    article_form = ArticleForm(request.POST, request.FILES)
    if article_form.is_valid():
        instance = article_form.save(commit=False)
        instance.author = request.user
        article_form.save()
        return redirect('/')
else:
    article_form = ArticleForm()
return render(request, 'blog/article-create.html', {'form': article_form})

请注意,您总是需要在成功 POST 后重定向,就像我在上面所做的那样。


推荐阅读