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