0

I expect code to redirect to url with name=home. But I am getting an error.

code snippet from my views.py:

def signup(request):
    if request.method=='POST':
        form = Signup(request.POST)
        if form.is_valid():
            name = form.cleaned_data['username']
            email = form.cleaned_data['email']
            new_user = User(name=name, email=email)
            new_user.save()
            return redirect('home')

code snippet from my urls.py:

urlpatterns = [
    path('', views.home, name='home')]

Error I am getting is: NoReverseMatch at /signup/ Reverse for 'home' not found. 'home' is not a valid view function or pattern name.

  • Does this answer your question? [What is a NoReverseMatch error, and how do I fix it?](https://stackoverflow.com/questions/38390177/what-is-a-noreversematch-error-and-how-do-i-fix-it) – Matt P Jul 26 '20 at 20:23

1 Answers1

0

The function redirect takes a view-name, or url as argument, not the name of a path. E.g. return redirect('some-view-name')

However, you want to use the path name you have specified you can use reverse().

from django.urls import reverse
return redirect(reverse('home'))
Felix Eklöf
  • 3,253
  • 2
  • 10
  • 27
  • i did the same thing sir... instead of some-view-name i passed home which i have specified as a view name in urls.py –  Jul 27 '20 at 04:52
  • i tried your solution but got this error - Reverse for 'home' not found. 'home' is not a valid view function or pattern name. –  Jul 27 '20 at 09:12