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

Django中HTML注册表单提交404,数据无法接收的解决求助

问题分析与修复方案

1. 修正URL路由配置

项目根URL(demo/urls.py)

当前代码错误地将user路径直接绑定到register视图,正确做法是包含user应用的URL配置并设置命名空间:

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    # 包含user应用的URL,添加命名空间便于反向解析
    path('user/', include(('user.urls', 'user'), namespace='user')),
]

用户应用URL(user/urls.py)

给register路径添加斜杠后缀,并设置URL名称(用于模板反向解析):

from django.urls import path
from . import views

urlpatterns = [
    # 添加名称'register',配合命名空间使用
    path('register/', views.register, name='register'),
]

2. 修复模板中的表单与脚本问题

修正表单action路径

模板里的反向解析需要加上命名空间,修改表单标签:

<form id="NewUser" method="POST" action="{% url 'user:register' %}">

修复日期赋值逻辑

原模板中Django模板渲染在JS执行前,无法通过{{ current_datetime }}获取JS生成的值,直接用JS给hidden字段赋值:

<script>
// 直接给hidden字段赋值
var current_datetime = new Date().toISOString();
document.querySelector('input[name="created_at"]').value = current_datetime;
document.querySelector('input[name="updated_at"]').value = current_datetime;
</script>

<!-- 简化hidden字段,无需初始值 -->
<input type="hidden" name="created_at">
<input type="hidden" name="updated_at">

3. 完善视图函数(views.py)

当前视图处理POST请求后无响应返回,需添加数据保存逻辑与响应:

from django.shortcuts import render, redirect
# 导入你的用户模型,示例:from .models import UserProfile

def register(request):
    if request.method == 'POST':
        name = request.POST.get("name")
        email = request.POST.get("email")
        password = request.POST.get("password")
        created_at = request.POST.get("created_at")
        updated_at = request.POST.get("updated_at")
        
        # 添加数据保存逻辑,示例:
        # UserProfile.objects.create(
        #     name=name, email=email, password=password,
        #     created_at=created_at, updated_at=updated_at
        # )
        
        # 处理完成后重定向到注册页面或成功页
        return redirect('user:register')
    # GET请求返回注册页面
    return render(request, '你的注册模板文件名.html')

4. 处理无关404日志

日志中的/和/cart.json 404是因为未配置根路径与cart相关路由,若不需要可忽略,或在demo/urls.py中添加根路径跳转:

path('', redirect('user:register')), # 访问根路径时跳转到注册页面

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 11:10:35