/signup/处的NoReverseMatch-为'< WSGIRequest:POST'/signup/'>'未找到 [英] NoReverseMatch at /signup/ - Reverse for '<WSGIRequest: POST '/signup/'>' not found

查看:109
本文介绍了/signup/处的NoReverseMatch-为'< WSGIRequest:POST'/signup/'>'未找到的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在处理的项目是博客网站,并且停留在此注册过程中,我希望它能够像注册后一样起作用,用户登陆到主页上,但这反而向我显示了以上错误

views.py:

  def handleSignup(request):如果request.method =='POST':用户名= request.POST ['用户名']fname = request.POST ['fname']lname = request.POST ['lname']电子邮件= request.POST ['email']pass1 = request.POST ['pass1']pass2 = request.POST ['pass2']#创建用户myuser = User.objects.create_user(用户名,电子邮件,密码1)myuser.first_name = fnamemyuser.last_name = lnamemyuser.save()messages.success(请求,您的帐户已成功创建!")返回重定向(请求,"/home.html")别的:返回HttpResponse(未找到错误404") 

urls.py:

  urlpatterns = [path(",views.home,名称="home"),路径("contact/",views.contact,name ="contact"),path("about",views.about,name ="about"),路径("signup/",views.handleSignup,name ="handleSignup"),] 

base.html中的表单:

 < form action ="/signup/";method ="post">< div class ="form-group">< label for =用户名">用户名</label><输入类型=文本";class ="form-control"id =用户名"name =用户名"占位符=选择唯一的用户名"</div>< div class ="form-group">< label for ="fname">名字</label><输入类型=文本";class ="form-control"id ="fname"name ='fname'placeholder ="First Name"></div>< div class ="form-group">< label for ="lname">姓氏</label><输入类型=文本";class ="form-control"id ="lname"name ='lname'占位符=姓氏"></div>< div class ="form-group">< label for =电子邮件"> Email</label><输入类型=电子邮件"class ="form-control"id ="email"name ='email'占位符="email@example.com"></div>< div class ="form-group">< label for ="pass1">选择密码</label><输入类型=密码";class ="form-control"名称="pass1" id ="pass1"</div>< div class ="form-group">< label for ="pass2">确认密码</label><输入类型=密码";class ="form-control"名称="pass2" id ="pass2"</div>{%csrf_token%}< button type =提交";class ="btn btn-primary"> Submit</button></form> 

错误日志:

  NoReverseMatch位于/signup/反转为< WSGIRequest:POST'/signup/'>"未找到.'< WSGIRequest:POST'/signup/'>'不是有效的视图函数或模式名称.请求方法:POST要求网址:http://127.0.0.1:8000/signup/Django版本:3.1异常类型:NoReverseMatch异常值:反转为< WSGIRequest:POST'/signup/'>"未找到.'< WSGIRequest:POST'/signup/'>'不是有效的视图函数或模式名称.异常位置:_reverse_with_prefix中的C:\ Users \ jayant nigam \ projects \ practise \ lib \ site-packages \ django \ urls \ resolvers.py,行685Python可执行文件:C:\ Users \ jayant nigam \ projects \ practise \ Scripts \ python.exe的Python版本:3.8.5Python路径:['C:\\ Users \\ jayant nigam \\ projects \\ everythingcs','C:\\ Python38 \\ python38.zip','C:\\ Python38 \\ DLLs','C:\\ Python38 \\ lib','C:\\ Python38','C:\\ Users \\ jayant nigam \\ projects \\ practise','C:\\ Users \\ jayant nigam \\ projects \\ practise \\ lib \\ site-packages']服务器时间:2020年9月28日星期一17:39:46 +0000 

突出显示的错误行:

 返回重定向(请求,"/home.html") 

解决方案

您在 urls中指定了 path(,",views.home,name ="home").py ,因此您可以执行以下操作:

 返回重定向("/") 

您不应该将 request 作为第一个参数传递给 redirect(),您通常只需提供一个URL(相对或绝对)即可.

实际上,作为最佳实践,应使用 reverse 提供URL,例如:

来自django.urls的

 反向导入...返回重定向(reverse('home')) 

有关 redirect() .

The project I am working on is the blogging website and I am stuck at this signup process, I want it to function like after signup, the user lands on the home page, but instead this is showing me the above error

views.py:

def handleSignup(request):
    if request.method == 'POST':
        
        username = request.POST['username']
        fname = request.POST['fname']
        lname = request.POST['lname']
        email = request.POST['email']
        pass1 = request.POST['pass1']
        pass2 = request.POST['pass2']
        
    # creating users

        myuser = User.objects.create_user(username, email, pass1)
        myuser.first_name = fname
        myuser.last_name = lname
        myuser.save()
        messages.success(request, 'your account have been successfully created!')
        
        return redirect(request, "/home.html")

    else:
        return HttpResponse("error 404 not found")

urls.py:

urlpatterns = [
    path("", views.home, name="home"),
    path("contact/", views.contact, name="contact"),
    path("about", views.about, name="about"),
    path("signup/", views.handleSignup, name="handleSignup"),
]

forms in base.html:

          <form action="/signup/" method="post">

            <div class="form-group">
              <label for="username">Username</label>
              <input type="text" class="form-control" id="username" name = 'username' placeholder="choose a unique username">
            </div>

            <div class="form-group">
              <label for="fname">Firstname</label>
              <input type="text" class="form-control" id="fname" name = 'fname' placeholder="First Name">
            </div>

            <div class="form-group">
              <label for="lname">Lastname</label>
              <input type="text" class="form-control" id="lname" name= 'lname' placeholder="Last Name">
            </div>

            <div class="form-group">
              <label for="email">Email</label>
              <input type="email" class="form-control" id="email" name = 'email' placeholder="email@example.com">
            </div>

            <div class="form-group">
              <label for="pass1">Choose Password</label>
              <input type="password" class="form-control" name = 'pass1' id="pass1">
            </div>

            <div class="form-group">
              <label for="pass2">Confirm password</label>
              <input type="password" class="form-control" name = 'pass2' id="pass2">
            </div>
            {% csrf_token %}
            <button type="submit" class="btn btn-primary">Submit</button>

          </form>

the error log:

NoReverseMatch at /signup/
Reverse for '<WSGIRequest: POST '/signup/'>' not found. '<WSGIRequest: POST '/signup/'>' is not a valid view function or pattern name.
Request Method: POST
Request URL:    http://127.0.0.1:8000/signup/
Django Version: 3.1
Exception Type: NoReverseMatch
Exception Value:    
Reverse for '<WSGIRequest: POST '/signup/'>' not found. '<WSGIRequest: POST '/signup/'>' is not a valid view function or pattern name.
Exception Location: C:\Users\jayant nigam\projects\practise\lib\site-packages\django\urls\resolvers.py, line 685, in _reverse_with_prefix
Python Executable:  C:\Users\jayant nigam\projects\practise\Scripts\python.exe
Python Version: 3.8.5
Python Path:    
['C:\\Users\\jayant nigam\\projects\\everythingcs',
 'C:\\Python38\\python38.zip',
 'C:\\Python38\\DLLs',
 'C:\\Python38\\lib',
 'C:\\Python38',
 'C:\\Users\\jayant nigam\\projects\\practise',
 'C:\\Users\\jayant nigam\\projects\\practise\\lib\\site-packages']
Server time:    Mon, 28 Sep 2020 17:39:46 +0000

the error line which it is highlighting:

return redirect(request, "/home.html")

解决方案

You specified path("", views.home, name="home") in your urls.py, therefore you can just do:

return redirect("/")

You shouldn't be passing request as a first argument to redirect(), you only need to provide a URL (relative or absolute) most of the time.

Actually, as a best practice, that URL should be provided using reverse, e.g.:

from django.urls import reverse
...
return redirect(reverse('home'))

See the doc for redirect().

这篇关于/signup/处的NoReverseMatch-为'&lt; WSGIRequest:POST'/signup/'&gt;'未找到的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆