Python 为什么要在Django中复制post数据而不是直接使用它?

Python 为什么要在Django中复制post数据而不是直接使用它?,python,django,Python,Django,涉及post数据的Django代码示例通常显示类似于以下内容的代码: if request.method == "POST": post = request.POST.copy() #do stuff with post data 复制post数据而不是直接使用它有什么原因吗?我认为这是因为请求。post本身被定义为不可变的。如果您想要一个可以实际更改的版本(可变性),则需要一个数据副本来处理 请参阅(request.POST是QueryDict实例) QueryDict实例是不

涉及post数据的Django代码示例通常显示类似于以下内容的代码:

if request.method == "POST":
   post = request.POST.copy()
   #do stuff with post data

复制post数据而不是直接使用它有什么原因吗?

我认为这是因为
请求。post本身被定义为不可变的。如果您想要一个可以实际更改的版本(可变性),则需要一个数据副本来处理

请参阅(request.POST是QueryDict实例)


QueryDict
实例是不可变的,除非创建它们的
copy()
。这意味着您不能直接更改
request.POST
request.GET的属性

+1:而且它必须是不可变的,这样它就可以惰性地构建。复制强制获取所有POST数据。在复制之前,可能无法获取所有副本。此外,对于一个多线程WSGI服务器来说,如果它是不可变的,那么它将非常有用