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

