111 votes

django - pourquoi l'objet request.POST est-il immuable ?

Comme le demande le titre, pourquoi les gars de Django ont-ils décidé d'implémenter l'objet request.POST avec un querydict (ce qui, bien sûr, rend le tout immuable) ?

Je sais que tu peux mutifier en faisant une copie des données postales

post = request.POST.copy()

mais pourquoi faire cela ? Il serait sûrement plus simple de permettre à la chose d'être mutable de toute façon ? Ou bien est-il utilisé pour une autre raison qui pourrait poser problème ?

1 votes

Pourquoi voulez-vous qu'il soit mutable ? Vous pouvez prendre les données qui s'y trouvent et les utiliser/modifier dans votre vue. En y ajoutant des données, vous pouvez donner l'impression que request.POST a été soumis avec plus de données qu'il ne l'a été en réalité.

11 votes

Ce n'est pas que je veulent qu'il soit mutable. Pas plus que, disons, je ne voudrais que la crème glacée soit froide. Dans le cas de la crème glacée cependant, si c'est n'est pas froid, il fond et ensuite tu te fais gronder pour avoir fait un gros gâchis. Mais avec l'objet request.POST... Je veux dire, si je dois bousiller mon code, je vais le bousiller. Je ne savais pas qu'il y avait une endémie de développeurs ajoutant des données aux objets POST et causant des problèmes, donc ça semble être une chose étrange à cibler pour "réparer".

0 votes

Bonne question ; je n'y ai jamais vraiment pensé.

1voto

Alex Paramonov Points 1615

Veuillez noter : multipart sont immuables depuis Django 1.11. https://github.com/django/django/blob/stable/1.11.x/django/http/multipartparser.py#L292

Ils étaient mutables dans les versions précédentes.

0 votes

Également mentionné dans Django 1.11 notes de mise à jour .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X