使用django.shortcuts.redirect添加request.GETvariables

有可能在redirect中添加GETvariables? (无需修改我的urls.py)

如果我做redirect('url-name', x)

我得到HttpResponseRedirect('/my_long_url/%s/', x)

我没有抱怨使用HttpResponseRedirect('/my_long_url/%s/?q=something', x) ,而只是想知道…

有可能在redirect中添加GETvariables? (无需修改我的urls.py)

我不知道有什么办法做到这一点, 而不修改urls.py

我没有抱怨使用HttpResponseRedirect('/ my_long_url /%s /?q = something',x),而只是想知道…

你可能想写一个薄包装,使这更容易。 说, 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) 

这可以从你的意见中调用。 例如

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

由于redirect只是返回一个HttpResponseRedirect对象,你可以改变它:

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