是否可以在重定向中添加GET变量?(无需修改我的urls.py)
如果我使用redirect('url-name', x)
我得到了HttpResponseRedirect('/my_long_url/%s/', x)
我没有抱怨使用HttpResponseRedirect('/my_long_url/%s/?q=something', x),但我只是想知道...
发布于 2010-09-22 13:04:20
可以在重定向中添加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'发布于 2010-09-22 13:14:51
因为重定向只返回一个HttpResponseRedirect对象,所以您可以直接更改该对象:
response = redirect('url-name', x)
response['Location'] += '?your=querystring'
return response发布于 2018-07-04 16:15:39
我们可以从django导入urlencode。
from django.utils.http import urlencode
get_args_str = urlencode({'q': 'something'})或者,我们可以只使用启动请求中未解析的get参数字符串
get_args_str = request.META['QUERY_STRING']
HttpResponseRedirect('%s?%s' % (url, get_args_str))https://stackoverflow.com/questions/3765887
复制相似问题