Güncelleme :
Gareth Rees, bu durumda 1 ve 3'ün geçerli olmadığı konusunda haklıydı. 2. ve 4. noktaların hala geçerli olduğunu düşünmeme rağmen, bu nedenle tezleri burada bırakacağım.
( request.POST
Hem Pyramid (Pylon) hem de Django'nun nesnesinin bir tür olduğunu fark ettim MultiDict
. Bu yüzden belki de request.POST
değişmez yapmaktan daha yaygın bir uygulamadır .)
Django adamları adına konuşamam, bana öyle geliyor ki, aşağıdaki nedenlerden bazıları:
Performans . immutable nesneler, önemli optimizasyonlara izin verdiklerinden, değiştirilebilir olanlara göre "daha hızlıdır". Bir nesnenin değişmez olması, yaratılış zamanında ona yer ayırabileceğimiz ve alan gereksinimlerinin değişmediği anlamına gelir. Aynı zamanda kopya verimliliği ve karşılaştırma verimliliği gibi şeylere de sahiptir.
Düzenleme :QueryDict
Gareth Rees'in işaretettiğigibidurum böyle değil.
- Bu durumda
request.POST
, sunucu tarafında hiçbir faaliyetin talebin verilerini değiştirmesi gerekmiyor gibi görünüyor . Ve bu nedenle değişmez nesneler daha uygundur, önemli performans avantajlarına sahip olduklarından bahsetmeye bile gerek yok.
Değişken olmayan objeler olarak kullanılabilir dict
Anahtarlar, herhalde Django .. çok yararlı bir yerde olabilir
Edit : Benim hatam, değişmez doğrudan anlamına gelmez hashable ; bununla birlikte, hashable nesneler de tipik olarak değişmezdir .
- Etrafta dolaşırken
request.POST
(özellikle üçüncü taraf eklentilere ve dışarıya), kullanıcıdan gelen bu istek nesnesinin değişmeden kalmasını bekleyebilirsiniz.
Bir şekilde bu nedenler aynı zamanda "değişmez mi, değişmez mi?" Sorusuna genel yanıtlardır. soru. Eminim, Django durumunda yukarıdakinden çok daha fazla tasarım düşüncesi vardır.
request.POST
gerçekte olduğundan daha fazla veriyle gönderilen gösterimi oluşturabilirsiniz .