Django 页面未找到(404)请求方法: ;发布请求URL:http://127.0.0.1:8000/reg_done

Django 页面未找到(404)请求方法: ;发布请求URL:http://127.0.0.1:8000/reg_done,django,forms,Django,Forms,上面是我的url.py。我正在尝试的是让我的注册完成页面在用户点击提交按钮保存注册信息后出现。但是它显示这个页面没有找到 我试图将表单操作中的路径更改为register/reg\u done/。但随后它显示了与register/register/reg_done相同的错误 在HTML中,我给表单操作赋予值“/reg\u done”,就是这样 下面是我的观点.py from django.contrib import admin from django.urls i

上面是我的url.py。我正在尝试的是让我的注册完成页面在用户点击提交按钮保存注册信息后出现。但是它显示这个页面没有找到

我试图将表单操作中的路径更改为register/reg\u done/。但随后它显示了与register/register/reg_done相同的错误

在HTML中,我给表单操作赋予值“/reg\u done”,就是这样

下面是我的观点.py

        from django.contrib import admin
        from django.urls import path
        from . import views
        
        urlpatterns = [
            path('', views.Index, name='Index'),
            path('register/', views.register, name='register'),
            path('login/', views.login, name='login'),
            path('register/reg_done/', views.reg_done,),
            ]

我假设
register
视图处理注册。以
register.html
文件的形式, 做:

我稍后会建议您避免“高级开发人员眼泪”

views.py
中,将以下内容添加到文件顶部: 从django.views.decorators.http导入需要\u POST

然后编辑
reg_done
视图以:

@require\u POST
def reg_完成(请求):
name=request.POST.get('name')
mail=request.POST.get('mail')
phone=request.POST.get('phone')
psw=request.POST.get('psw')
pswr=request.POST.get('pswr')
全部=[姓名、邮件、电话、psw、pswr]
返回呈现(请求'reg_done.html',{'all':all})
接下来,将
url.py
中的
reg_done
路径更改为: 路径('register/reg\u done/',views.reg\u done,name='reg\u done')


问题在于您对URL的使用。您应该将
reg\u done
视图引用为
/register/reg\u done
,而不是
register/reg\u done
。前者将其视为相对于域名的url,而后者将其视为相对于当前页面。这就是为什么从
register
视图进入后者会产生
register/register/reg\u done
而不是你想要的:
register/reg\u done

这个url没有多大意义,它应该是
127.0.0.1:8000/register/reg\u done/
。我刚刚在上面编辑了答案。如果仍然遇到问题,请添加注释。
        from django.shortcuts import render
        from django.http import HttpResponse
        import sqlite3
    
        # Create your views here.
        def Index(request):
            return render(request, 'index.html')
    
        def register(request):
            return render(request, 'register.html')
    
        def login(request):
             return render(request, 'login.html')
    
        def reg_done(request):
             name = request.POST.get('name')
             mail = request.POST.get('mail')
             phone = request.POST.get('phone')
             psw = request.POST.get('psw')
             pswr = request.POST.get('pswr')
             all = [name, mail, phone, psw, pswr]
             return render(request, 'reg_done.html', {'all':all})
<form action="/register/reg_done" method="post">
    your form fields here
</form>
<form action="{% url 'reg_done' %}"  method="post">
    your form fields here
</form>