如何在django视图中从url中删除get参数

时间:2013-10-01 00:29:33

标签: django django-views django-urls http-get url-parameters

我有以下观点:

def copy_group(request):
    copy = request.GET.get('copy','')

    if copy:
        #do my copy process

    context = {'view':'copy-view'}
    return render(request, 'groups/copy-view.html', context)

使用以下网址调用mysite.com/groups/?copy=1

问题在于,如果我刷新页面,我的过程会一遍又一遍地复制。

如何删除ge参数,以便url在复制后返回: mysite.com/groups /

我尝试在我的视图代码中插入它:

request.GET.pop('copy')

但是我得到错误:这个QueryDict实例是不可变的

2 个答案:

答案 0 :(得分:1)

如果我理解得很清楚,一旦你完成了复制,你就希望重定向页面,这样就不会再复制了。那样做:

...
if copy:
    the actual copy and then...
    return HttpResponseRedirect(redirect_to='/the-path-without-copy-parameter/')
...

然后你可以改进你的代码:

  • copy 添加为实际路由参数def copy_group(request, 复制=无
  • 在redirect_to中生成路径而不是硬编码
  • 超出主题:如果没有,则为其添加功能测试:)

BTW,我不确定你为什么使用Get参数而不只是一个不同的URL?

答案 1 :(得分:0)

我最后做了重定向。这将删除get参数。