views:

1035

answers:

2

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?

+3  A: 

You need to use the reverse() command.

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.

Soviut
Awesome, thanks for the help! I must have just been searching through the django docs all wrong.
Akoi Meexx
A: 

A more concise way to write that if statement would be if request.session.get('user'). has_key is deprecated nowadays, and .get() returns None (by default, changeable by passing a second parameter). So combining this with Soviut's reply:

from django.core.urlresolvers import reverse

def login(request): 
    if request.session.get('user'):
         return HttpResponseRedirect(reverse('my-named-url'))
AKX