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
相关产品推荐
相关产品推荐

