Actualización :
Gareth Rees tenía razón en que los puntos 1 y 3 no eran válidos en este caso. Aunque creo que los puntos 2 y 4 siguen siendo válidos, dejaré las tesis aquí.
(Me di cuenta de que el request.POST
objeto tanto de Pyramid (Pylon) como de Django es una forma de MultiDict
. Así que quizás sea una práctica más común que hacer request.POST
inmutable).
No puedo hablar por los chicos de Django, aunque me parece que podría hacerlo por algunas de estas razones:
Rendimiento . Los objetos inmutables son "más rápidos" que los mutables en el sentido de que permiten optimizaciones sustanciales. Un objeto es inmutable significa que podemos asignarle espacio en el momento de la creación y los requisitos de espacio no cambian. También tiene cosas como eficiencia de copia y eficiencia de comparación debido a eso.
Editar : este no es el casoQueryDict
como señaló Gareth Rees.
- En el caso de
request.POST
, parece que ninguna actividad en el lado del servidor debería necesitar alterar los datos de la solicitud . Y, por lo tanto, los objetos inmutables son más adecuados, sin mencionar que tienen una ventaja de rendimiento sustancial.
Los objetos inmutables se pueden usar como dict
claves, lo que supongo que podría ser muy útil en algún lugar de Django ..
Editar : mi error, inmutable no implica directamente hash ; Sin embargo, los objetos hash , normalmente también son inmutables .
- Cuando pase
request.POST
(especialmente a complementos de terceros y hacia fuera), puede esperar que este objeto de solicitud del usuario permanezca sin cambios.
De alguna manera, estas razones también son respuestas genéricas a "inmutable vs mutable?" pregunta. Estoy seguro de que hay muchas más consideraciones de diseño que las anteriores en el caso de Django.
request.POST
se ha enviado con más datos de los que realmente ha sido.