3

我有以下看法:

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)

这使用以下 url mysite.com/groups/?copy=1 调用

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

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

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

request.GET.pop('copy')

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

4

2 回答 2

1

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

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

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

  • 添加副本作为实际的路由参数,def copy_group(request, copy=None )
  • 在 redirect_to 中生成路径,而不是对其进行硬编码
  • 题外话:如果没有,请为其添加功能测试:)

顺便说一句,我不确定你为什么使用 Get 参数而不仅仅是一个不同的 URL?

于 2013-10-01T01:30:18.850 回答
0

我最终做了一个重定向。这将删除 get 参数。

于 2013-10-16T21:14:32.137 回答