是否可以在重定向中添加GET变量?(无需修改我的urls.py)
如果我做 redirect('url-name', x)
redirect('url-name', x)
我懂了 HttpResponseRedirect('/my_long_url/%s/', x)
HttpResponseRedirect('/my_long_url/%s/', x)
我没有抱怨HttpResponseRedirect('/my_long_url/%s/?q=something', x),而是只是想知道…
HttpResponseRedirect('/my_long_url/%s/?q=something', x)
不修改,我不知道有什么办法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'
由于重定向仅返回一个HttpResponseRedirect对象,因此你可以更改该对象:
HttpResponseRedirect
response = redirect('url-name', x) response['Location'] += '?your=querystring' return response