Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在django视图中从url中删除get参数_Django_Django Views_Django Urls_Http Get_Url Parameters - Fatal编程技术网

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

如何在django视图中从url中删除get参数,django,django-views,django-urls,http-get,url-parameters,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) 这是通过以下url mysite.com/groups/?copy=1调用的

我有以下看法:

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实例是不可变的

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

...
if copy:
    the actual copy and then...
    return HttpResponseRedirect(redirect_to='/the-path-without-copy-parameter/')
...
然后您可以改进代码:

  • 添加复制作为实际路线参数,def copy_组(请求, 复制=无
  • 在重定向_中生成路径,而不是对其进行硬编码
  • 主题外:如果没有功能测试,则为其添加功能测试:)

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

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

我认为您做错了什么,如果请求修改服务器上的数据,那么它必须是一个POST,而不是get