更新:
この場合、ポイント1と3は無効であるとGareth Reesは正しかった。ポイント2と4はまだ有効だと思いますが、ここではここに残しておきます。
(私はrequest.POST
Pyramid(Pylon)とDjangoの両方のオブジェクトが何らかの形式であることに気づきましたMultiDict
。ですから、おそらくそれをrequest.POST
不変にするよりも一般的な方法です。)
私はDjangoの人たちのために話すことはできませんが、それはこれらの理由のいくつかのためにそれができたように思えます:
パフォーマンス。不変オブジェクトは、実質的な最適化を可能にするという点で、可変オブジェクトよりも「高速」です。オブジェクトは不変です。つまり、作成時にオブジェクトにスペースを割り当てることができ、スペース要件は変わりません。そのため、コピー効率や比較効率などの機能もあります。
編集:QueryDict
Gareth Reesが指摘したように、これは当てはまりません。
- の場合
request.POST
、リクエストのデータを変更する必要のあるサーバー側のアクティビティはないようです。したがって、不変オブジェクトの方が適していることは言うまでもなく、パフォーマンスに大きな利点があります。
不変オブジェクトをdict
キーとして使用できます。Djangoのどこかで非常に役立つと思います。
編集:私の間違い、不変は直接意味しませんハッシュ可能。ただし、ハッシュ可能なオブジェクトは通常不変ですです。
request.POST
(特にサードパーティのプラグインとの間で)パススルーすると、ユーザーからのこのリクエストオブジェクトは変更されないままになると予想できます。
ある意味では、これらの理由は「不変か可変か」に対する一般的な回答でもあります。質問。Djangoの場合は、上記よりもはるかに多くの設計上の考慮事項があると思います。
request.POST
実際よりも多くのデータを使用して送信されたインプレッションを作成できます。