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

通过HTML表单创建用户失败:Django表单提交无数据写入问题

Django表单提交无法创建用户的问题修复

以下是代码中存在的问题及对应修正方案:

1. 请求方法判断错误

request.method的值为大写HTTP方法名,原代码中'post'小写判断永远无法触发POST分支,需改为大写'POST'。

2. 字段拼写错误

视图中request.POST['fisrt_name']存在拼写错误,应改为request.POST['first_name'],与表单name属性保持一致。

3. 模型字段名不匹配

自定义FormRegister模型的字段为firstname、lastname,但视图中错误使用first_name、last_name赋值,导致字段映射失败。

4. 错误调用模型方法

FormRegister是普通自定义模型,并非Django内置User模型,不存在create_user方法,需改用模型自带的create()方法创建对象。

5. 多余的save参数

create()方法已自动完成对象保存,无需再调用save(),且普通模型的save方法没有commit参数。

6. 模型循环导入问题

models.py中导入自身模型from .models import FormRegister会引发循环导入错误,需删除该行。


修正后的views.py

from django.shortcuts import render, redirect
from formRegister.models import FormRegister

def register(request):
    if request.method == 'POST':
        first_name = request.POST['first_name']
        last_name = request.POST['last_name']
        username = request.POST['username']
        
        FormRegister.objects.create(
            firstname=first_name,
            lastname=last_name,
            username=username
        )
        return redirect('/')
    else:
        return render(request, 'formRegister.html')

修正后的models.py

from distutils.command.upload import upload
from django.db import models

class FormRegister(models.Model):
    firstname = models.CharField(max_length=100)
    lastname = models.CharField(max_length=100)
    username = models.CharField(max_length=100)

优化后的formRegister.html(可选,使用URL反向解析避免硬编码)

<form action="{% url 'register' %}" method="post">
    {% csrf_token %}
    <input type="text" name="first_name" placeholder="First_Name"> <br>
    <input type="text" name="last_name" placeholder="Last_Name"> <br>
    <input type="text" name="username" placeholder="Username"> <br>
    <input type="Submit" value="Submit"> <br>
</form>
<script src="" async defer></script>
</body>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 18:24:04