如何在Django视图中使用get参数重定向?

时间:2019-05-04 08:40:10

标签: django redirect parameters get

我想在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.

3 个答案:

答案 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=3group,其中bar为{{1 }}和groupfoo。因此,这不是您想要的。通过使用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')