Pembaruan :
Gareth Rees benar bahwa poin 1 & 3 tidak valid dalam kasus ini. Meskipun menurut saya poin 2 dan 4 masih berlaku, oleh karena itu saya akan meninggalkan tesis di sini.
(Saya perhatikan bahwa request.POST
objek Pyramid (Pylon) dan Django adalah beberapa bentuk MultiDict
. Jadi mungkin ini adalah praktik yang lebih umum daripada membuat request.POST
kekal.)
Saya tidak dapat berbicara untuk orang-orang Django, meskipun bagi saya tampaknya bisa karena beberapa alasan berikut:
Pertunjukan . objek yang tidak dapat diubah "lebih cepat" daripada objek yang bisa berubah karena memungkinkan pengoptimalan yang substansial. Sebuah objek tidak dapat diubah artinya kita dapat mengalokasikan ruang untuknya pada waktu pembuatan , dan persyaratan ruang tidak berubah. Ia juga memiliki hal-hal seperti efisiensi penggandaan dan efisiensi perbandingan karenanya.
Sunting : ini tidak terjadiQueryDict
seperti yang ditunjukkan Gareth Rees.
- Dalam kasus
request.POST
, tampaknya tidak ada aktivitas di sisi server yang perlu mengubah data permintaan . Dan karenanya, objek yang tidak dapat diubah lebih cocok, belum lagi mereka memiliki keunggulan performa yang substansial.
Objek tak berubah bisa digunakan sebagai dict
kunci, yang saya kira bisa sangat berguna di suatu tempat di Django ..
Edit : kesalahan saya, tak bisa diubah tidak secara langsung menyiratkan hashable ; objek yang dapat di- hash , bagaimanapun, biasanya juga tidak dapat diubah .
- Saat Anda menyebarkan
request.POST
(terutama ke plugin pihak ketiga dan keluar), Anda dapat berharap bahwa objek permintaan dari pengguna ini tidak akan berubah.
Dalam beberapa hal, alasan ini juga merupakan jawaban umum untuk "tidak berubah vs bisa berubah?" pertanyaan. Saya yakin ada lebih banyak pertimbangan desain daripada di atas dalam kasus Django.
request.POST
telah dikirimkan dengan lebih banyak data daripada yang sebenarnya.