Оновлення :
Гарет Різ мав рацію, що пункти 1 та 3 в цьому випадку не дійсні. Хоча я вважаю, що пункти 2 і 4 все ще діють, тому я залишу тези тут.
(Я помітив, що request.POST
об'єктом і Піраміди (Пілона), і Джанго є якась форма MultiDict
. Тож, можливо, це є звичайнішою практикою, ніж робити request.POST
непорушним.)
Я не можу говорити за хлопців Джанго, хоча мені здається, що це могло через деякі з цих причин:
Виконання . незмінні об'єкти «швидші» над змінними, оскільки вони дозволяють істотно оптимізувати. Об'єкт незмінний означає, що ми можемо виділити для нього простір під час створення , а вимоги до простору не змінюються. У нього також є такі ефекти, як ефективність копіювання та ефективність порівняння.
Правка : це не так,QueryDict
як вказував Гарет Різ.
- У випадку
request.POST
, схоже, жодна активність на стороні сервера не потребує зміни даних запиту . А отже, непорушні предмети більше підходять, не кажучи вже про те, що вони мають значну перевагу у виконанні.
Незмінні об'єкти можуть використовуватися як dict
ключі, які, напевно, можуть бути дуже корисними десь у Django.
Редагувати : моя помилка, незмінна безпосередньо не передбачає доступність ; однак об'єкти, що змішуються , як правило, також незмінні .
- Коли ви переходите навколо
request.POST
(особливо до сторонніх плагінів і вихід), ви можете очікувати, що цей запит від користувача залишиться незмінним.
У чомусь ці причини також є загальними відповідями на "непорушний проти змінного?" питання. Я впевнений, що у випадку Джанго є набагато більше міркувань щодо дизайну, ніж вище.
request.POST
було подано з більшою кількістю даних, ніж насправді.