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

Jef*_*eff 5 python django

涉及帖子数据的Django代码示例通常显示类似于此的代码:

if request.method == "POST":
   post = request.POST.copy()
   #do stuff with post data
Run Code Online (Sandbox Code Playgroud)

是否有理由复制帖子数据而不是直接使用它?

Chr*_*heD 10

我认为这是因为request.POST它本身是不可变的.如果您想要一个可以实际更改的版本(可变性),则需要使用要复制的数据.

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


class QueryDict

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

  • +1:它*必须*是不可变的,以便它可以懒惰地构建.复制强制获取所有POST数据.直到副本,它可能不会全部被提取.此外,为了使多线程WSGI服务器能够很好地工作,如果这是不可变的,那么它会很有用. (2认同)