pythondjangohttp-redirectdjango-urls

Django and urls.py: How do I HttpResponseRedirect via a named url?


I'm writing a member-based web application, and I need to be able to redirect the page after login. I want to use the named url from my urls.py script in my views.py file for the login application, but I can't for the life of me figure out what to do. What I have is this:

def login(request): 
if request.session.has_key('user'):
    if request.session['user'] is not None:
        return HttpResponseRedirect('/path/to/page.html')

What I want to accomplish is something like:

def login(request): 
if request.session.has_key('user'):
    if request.session['user'] is not None:
        return HttpResponseRedirect url pageName

I get syntax errors when I execute this, any ideas?


Solution

  • You need to use the reverse() utils function.

    from django.urls import reverse
    # or Django < 2.0 : from django.core.urlresolvers import reverse
    
    def myview(request):
        return HttpResponseRedirect(reverse('arch-summary', args=[1945]))
    

    Where args satisfies all the arguments in your url's regular expression. You can also supply named args by passing a dictionary.