views:

68

answers:

1

Django code samples involving post data often shows code similar to this:

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

Is there a reason for copying the post data instead of working with it directly?

+5  A: 

I think it is because request.POST itself is defined immutable. If you want a version you can actually change (mutability), you need a copy of the data to work with.

See this link (request.POST is a QueryDict instance).

ChristopheD
+1: And it *must* be immutable so that it can be built lazily. The copy forces getting all the POST data. Until the copy, it may not all be fetched. Further, for a multi-threaded WSGI server to work reasonably well, it's helpful if this is immutable.
S.Lott