如何在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