我想在Django视图中使用GET参数进行重定向。由于某些原因,我想使用GET参数,而不是url参数。
def product_new(request):
group = request.GET.get('group')
if group == None:
product = Product.objects.create()
return redirect('cms:product_list_edit')
else:
product = Product.objects.create(group=group)
rreturn redirect('cms:product_list_edit') # I want to redirect this url with GET parameter.
答案 0 :(得分:0)
我找到了我想要的答案。
def product_new(request):
group = request.GET.get('group')
if group == None:
product = Product.objects.create()
return redirect('cms:product_list_edit')
else:
product = Product.objects.create(group=group)
response = redirect('cms:product_list_edit')
response['Location'] += '?group=' + group
return response
答案 1 :(得分:0)
据我所知,Django没有工具将查询字符串添加到URL,但这本身不是问题,因为我们可以创建自己的函数,例如:
self.titleTextAttributes = [
NSForegroundColorAttributeName : UIColor.white,
NSFontAttributeName : UIFont(name: "Avenir-Heavy", size: <30>)!
]
对值进行编码很重要。假设您的from django.urls import reverse
from django.http.response import HttpResponseRedirect
def redirect_qd(viewname, *args, qd=None, **kwargs):
rev = reverse(viewname, *args, **kwargs)
if qd:
rev = '{}?{}'.format(rev, qd.urlencode())
return HttpResponseRedirect(rev)
的值为group
。如果您对它们进行 not 正确编码,则意味着您的查询字符串稍后将被解析为两个参数:foo&bar=3
和group
,其中bar
为{{1 }}和group
为foo
。因此,这不是您想要的。通过使用bar
,将得到3
,因此它是预期值。
然后我们可以使用以下功能:
urlencode
如果您只想传递整个查询字符串,则可以使用'group=foo%26bar%3D3'
进行调用。
答案 2 :(得分:0)
对于python3及更高版本:
def redirect_with_params(viewname, **kwargs):
"""
Redirect a view with params
"""
rev = reverse(viewname)
params = urllib.parse.urlencode(kwargs)
if params:
rev = '{}?{}'.format(rev, params)
return HttpResponseRedirect(rev)
使用:
redirect_with_params('main-domain:index', param1='value1', param2='value2')