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

Django注册模板提交错误数据时无法显示错误提示问题求助

问题修复方案

核心问题定位

  • 模板未编写表单错误的渲染逻辑,校验失败的提示没有展示入口
  • 视图函数中GET请求场景下表单未正确实例化,属于语法疏漏

代码修改示例

模板文件修改

在原有表单循环逻辑中补充错误渲染代码,可自定义错误提示的样式:

<form action="" method='post'>
{% csrf_token %}
{# 渲染跨字段的全局错误,比如两次密码输入不一致 #}
{% if form.non_field_errors %}
<div style="color: red;margin-bottom: 12px;">{{ form.non_field_errors }}</div>
{% endif %}
{% for field in form %}
<p>
    {{ field.label }}{{ field }}
    {# 渲染当前字段的专属错误,比如用户名已存在、邮箱格式错误 #}
    {% if field.errors %}
    <span style="color: red;font-size: 14px;margin-left: 8px;">{{ field.errors.0 }}</span>
    {% endif %}
</p>       
{% endfor %}     
<button type="submit" class="btn btn-success">Create User</button>
</form>

views.py修改

修正GET请求下表单实例化的语法错误:

def register_page(request):
    # 修正:类名后加()完成实例化
    form = UserForm()
    if request.method == 'POST':
        form = UserForm(request.POST)
        if form.is_valid():
            form.save()            
            return HttpResponseRedirect('http://127.0.0.1:8000/login_user/')  
    context = {'form' : form}
    return render(request, 'simple_investing/register.htm', context)

逻辑说明

当用户提交的表单校验不通过时,form.is_valid()会返回False,此时携带完整错误信息的form实例会传入模板,你添加的错误渲染代码就会自动展示对应的提示内容。UserCreationForm本身已经内置了所有字段的校验规则,不需要额外修改Forms.py的代码即可正常输出错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 10:39:01