Add Request.GET Variable Using Django.shortcuts.redirect


Answer :

Since redirect just returns an HttpResponseRedirect object, you could just alter that:

response = redirect('url-name', x) response['Location'] += '?your=querystring' return response 

Is possible to add GET variables in a redirect ? (Without having to modifiy my urls.py)

I don't know of any way to do this without modifying the urls.py.

I don't have complains using HttpResponseRedirect('/my_long_url/%s/?q=something', x) instead, but just wondering...

You might want to write a thin wrapper to make this easier. Say, custom_redirect

def custom_redirect(url_name, *args, **kwargs):     from django.core.urlresolvers import reverse      import urllib     url = reverse(url_name, args = args)     params = urllib.urlencode(kwargs)     return HttpResponseRedirect(url + "?%s" % params) 

This can then be called from your views. For e.g.

return custom_redirect('url-name', x, q = 'something') # Should redirect to '/my_long_url/x/?q=something' 

We can import urlencode from django.

from django.utils.http import urlencode  get_args_str = urlencode({'q': 'something'}) 

Or we can just use unparsed get parameters string from starting request

get_args_str = request.META['QUERY_STRING']  HttpResponseRedirect('%s?%s' % (url, get_args_str)) 

Comments

Popular posts from this blog

Chemistry - Bond Angles In NH3 And NCl3

Are Regular VACUUM ANALYZE Still Recommended Under 9.1?

Can Feynman Diagrams Be Used To Represent Any Perturbation Theory?