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

Django提交注册数据触发报错,寻求解决方案(附代码与报错栈)

Django注册功能报错修复指南

1. 先解决POST URL尾斜杠问题

报错核心原因:你用POST请求访问了不带尾部斜杠的/register,而Django默认开启APPEND_SLASH配置,此时Django无法在重定向到带斜杠的URL时保留POST数据,直接抛出错误。两种解决办法:

  • 改表单提交地址:把表单的action改成127.0.0.1:8000/register/(必须加末尾的斜杠),或者用Django模板标签生成正确路径{% url 'register' %}(前提是urls.py里给视图设置了name参数)。
  • 改Django配置:在settings.py里添加APPEND_SLASH = False,但不推荐,会破坏Django的URL规范,容易引发其他问题。

2. 修复视图和模型里的代码错误

就算解决了URL问题,你的代码还有多处错误,无法正常将数据存入数据库:

(1)模型字段错误

models.py里的phone = models.IntegerField(max_length=13)是错误的——IntegerField不支持max_length参数,而且电话号码建议用CharField(可能包含区号、加号等非数字字符,长数字用Integer还会出现溢出问题),修改为:

phone = models.CharField(max_length=13)

(2)视图里的模型引用错误

你导入了Django内置的User模型,但实际需要使用自己定义的register模型,替换原来的导入语句:

from .models import register  # 替换from django.contrib.auth.models import User

(3)视图变量不匹配+逻辑错误

  • 你从POST中获取的是name,但模型对应的字段是your_name;POST的phone_number对应模型的phone;代码里写的user.objects.create_user(name=name)完全错误——name变量未定义,且你应该用自定义的register模型创建实例,而非内置User模型。
  • 建议先判断请求方法,避免GET请求访问该视图时报错。

修复后的register视图代码:

def register(request):
    if request.method == 'POST':
        your_name = request.POST['name']
        email = request.POST['email']
        phone_number = request.POST['phone_number']
        account = request.POST['account']
        message = request.POST['message']
        
        # 创建自定义模型实例并保存到数据库
        new_record = register(
            your_name=your_name,
            Email=email,
            phone=phone_number,
            account=account,
            message=message
        )
        new_record.save()
        
        print("我们会联系你")
        return redirect('/')
    # GET请求返回注册页面(如果有对应的模板)
    return render(request, 'register.html')

额外提醒

  • 取POST数据时,尽量用request.POST.get('字段名', '')代替直接取键,避免字段缺失时报错。
  • 模型类名建议改成Register(大驼峰格式),符合Python编码规范。
  • 正式开发最好用Django的Form类处理表单,能自动做数据验证,减少出错概率。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 16:48:20