You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django 2.0.7中clean_title抛出的ValidationError无法在页面显示怎么解决

问题原因

问题出在views.py的逻辑里:不管表单校验是否通过,你都用form = CreateForm()重新生成了一个空白的表单实例,覆盖了之前携带校验错误信息的form对象。模板渲染的是全新的空白表单,自然不会展示错误提示。

修复方法

调整视图逻辑,仅在表单校验通过后再重置表单/跳转,校验失败时直接将携带错误的form实例传给模板即可。推荐采用重定向的写法避免表单重复提交,修正后的代码如下:

from django.shortcuts import render, redirect
from .models import Product
from .forms import ProductForm as CreateForm, PureDjangoForm

def create_form(request):
    if request.method == "POST":
        form = CreateForm(request.POST)
        if form.is_valid():
            form.save()
            # 保存成功后重定向到当前页或其他业务页,替换为你实际的路由名即可
            return redirect("create_form")
    else:
        # GET请求时生成空白表单
        form = CreateForm()
    context = {
        'form': form
    }
    return render(request, "create_product_form.html", context)

如果暂时不需要重定向,也可以用简化写法:

def create_form(request):
    form = CreateForm(request.POST or None)
    if form.is_valid():
        form.save()
        # 仅在保存成功时重置表单
        form = CreateForm()
    context = {
        'form': form
    }
    return render(request, "create_product_form.html", context)

修改后重新提交不符合规则的标题,就能在表单字段上方看到对应的校验错误提示。

内容的提问来源于stack exchange,提问作者Ruslan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 15:48:02