อัปเดต :
Gareth Rees พูดถูกว่าจุด 1 & 3 ไม่ถูกต้องในกรณีนี้ แม้ว่าฉันคิดว่าจุดที่ 2 และ 4 ยังใช้ได้ดังนั้นฉันจะทิ้งวิทยานิพนธ์ไว้ที่นี่
(ฉันสังเกตว่าrequest.POST
วัตถุของทั้ง Pyramid (Pylon) และ Django เป็นรูปแบบบางอย่างMultiDict
ดังนั้นอาจเป็นวิธีปฏิบัติทั่วไปมากกว่าการทำให้request.POST
ไม่เปลี่ยนรูป)
ฉันไม่สามารถพูดแทนพวก Django ได้แม้ว่าสำหรับฉันแล้วมันอาจจะเป็นเพราะเหตุผลเหล่านี้:
การแสดง . วัตถุที่ไม่เปลี่ยนรูปนั้น "เร็วกว่า" มากกว่าวัตถุที่เปลี่ยนแปลงไม่ได้เนื่องจากอนุญาตให้มีการเพิ่มประสิทธิภาพได้มาก วัตถุไม่เปลี่ยนรูปหมายความว่าเราสามารถจัดสรรพื้นที่ให้กับมันได้ในเวลาสร้างและความต้องการพื้นที่จะไม่เปลี่ยนแปลง นอกจากนี้ยังมีสิ่งต่างๆเช่นประสิทธิภาพในการคัดลอกและประสิทธิภาพการเปรียบเทียบเนื่องจากมัน
แก้ไข : นี่ไม่ใช่กรณีQueryDict
อย่างที่ Gareth Rees ชี้ให้เห็น
- ในกรณี
request.POST
นี้ดูเหมือนว่าไม่มีกิจกรรมใดในฝั่งเซิร์ฟเวอร์ที่จำเป็นต้องแก้ไขข้อมูลของคำขอ และด้วยเหตุนี้วัตถุที่ไม่เปลี่ยนรูปจึงมีความเหมาะสมมากกว่าไม่ต้องพูดถึงพวกเขามีข้อได้เปรียบในการแสดง
วัตถุที่ไม่เปลี่ยนรูปสามารถใช้เป็นdict
ปุ่มซึ่งผมคิดว่าอาจจะเป็นที่ใดที่หนึ่งที่มีประโยชน์มากใน Django ..
แก้ไข : ความผิดพลาดของฉันไม่เปลี่ยนรูปไม่ได้โดยตรงบ่งบอกhashable ; อย่างไรก็ตามวัตถุที่ล้างทำความสะอาดได้มักจะไม่เปลี่ยนรูปเช่นกัน
- เมื่อคุณผ่านไปมา
request.POST
(โดยเฉพาะอย่างยิ่งกับปลั๊กอินของบุคคลที่สามและออก) คุณสามารถคาดหวังได้ว่าวัตถุคำขอนี้จากผู้ใช้จะยังคงไม่เปลี่ยนแปลง
ในทางใดทางหนึ่งเหตุผลเหล่านี้ยังเป็นคำตอบทั่วไปสำหรับ "ไม่เปลี่ยนรูปหรือเปลี่ยนแปลงไม่ได้?" คำถาม. ฉันมั่นใจว่ามีข้อควรพิจารณาในการออกแบบมากกว่าข้างบนในเคส Django
request.POST
ถูกส่งโดยมีข้อมูลมากกว่าที่เป็นจริง