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

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


You need to use the reverse() utils function.

from django.urls import reverse# or Django < 2.0 : from django.core.urlresolvers import reversedef 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.


The right answer from Django 1.3 onwards, where the redirect method implicitly does a reverse call, is:

from django.shortcuts import redirectdef login(request):    if request.session.get('user'):        return redirect('named_url')


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 reversedef login(request):     if request.session.get('user'):         return HttpResponseRedirect(reverse('my-named-url'))