一尘不染

使用django.shortcuts.redirect添加request.GET变量

django

是否可以在重定向中添加GET变量?(无需修改我的urls.py)

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

我懂了 HttpResponseRedirect('/my_long_url/%s/', x)

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


阅读 423

收藏
2020-04-02

共2个答案

一尘不染

是否可以在重定向中添加GET变量?(无需修改我的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'
2020-04-02
一尘不染

由于重定向仅返回一个HttpResponseRedirect对象,因此你可以更改该对象:

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