[解決済み] django - なぜ request.POST オブジェクトは immutable なのですか?
疑問点
タイトルにあるように、なぜ Django の人たちは request.POST オブジェクトを querydict で実装することにしたのでしょうか (もちろん、その結果、全体が immutable になるのでしょうが?)。
私は、あなたが ミューティファイ というのは、投稿データをコピーして
post = request.POST.copy()
しかし、なぜこのようなことをするのでしょうか?どうせなら、そのオブジェクトを変更可能にした方がシンプルではないでしょうか?それとも、何か他の理由で使われていて、それが問題を引き起こしているのでしょうか?
どのように解決するのですか?
ちょっと不思議な話ですよね。表面的にもっともらしいと思われるいくつかの説が、調査してみると間違っていることがわかったりします。
-
ということは
POST
オブジェクトは突然変異のメソッドを実装する必要がないのですか?いいえ。POST
オブジェクトに属しています。django.http.QueryDict
クラス を含む突然変異のメソッド一式を実装しています。__setitem__
,__delitem__
,pop
とclear
. 変異メソッドの一つを呼び出すときにフラグをチェックすることで、不変性を実装しています。またcopy
メソッドを呼び出すと、別のQueryDict
のインスタンスを取得します。 -
パフォーマンス向上のため?いいえ。
QueryDict
クラスは、mutable フラグをオフにした場合、パフォーマンスの恩恵を受けません。 -
そのため
POST
オブジェクトを辞書のキーとして使用することができますか?いいえ。QueryDict
オブジェクトはハッシュ化できません。 -
ということは
POST
のデータを (レスポンス全体を読むことにコミットすることなく) 気楽に構築することができます。 はここで主張されているように ? コードにその証拠は見当たりません。私が知る限り、レスポンスの全体は常に読み込まれ、どちらかというと 直接 で、あるいはMultiPartParser
の場合multipart
のレスポンスになります。 -
プログラミングエラーから守るため?私はこの主張を見たことがありますが、これらのエラーが何であるか、そして不変性がどのようにそれらからあなたを守るかについての良い説明を見たことがありません。
いずれにせよ
POST
は
は常に不変とは限りません。
: レスポンスが
multipart
である場合、その後に
POST
はミュータブルである。これは、あなたが考えるかもしれないほとんどの理論に一石を投じるようなものです。(この動作が見落としであれば別ですが)。
まとめると
明確な根拠は見当たりません
のための Django における
POST
オブジェクトが、非
multipart
リクエストに対応します。
関連
-
django store to databaseは現地時間より8時間短い?(2021-05-12更新)
-
[解決済み] POSTとPUT HTTP REQUESTの違いは何ですか?
-
[解決済み] QuerySetで空白またはNULLの名前をフィルタリングする方法は?
-
[解決済み] RuntimeWarning: DateTimeFieldがナイーブなdatetimeを受信した
-
[解決済み] (13: Permission denied) 上流:[nginx]に接続中。
-
[解決済み】HTTPのPOSTとPUTの違いは何ですか?
-
[解決済み】Djangoでnull=Trueとblank=Trueの違いは何ですか?
-
[解決済み] django で複数のオブジェクトを削除する
-
[解決済み] Djangoで複数のfilter()を連鎖させる、これはバグ?
-
[解決済み] django テンプレートで "ブロック" を繰り返す方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
ユニコードオブジェクトはハッシュ化する前にエンコードする必要がある問題を解決
-
Djangoは、フォームを送信するときに403エラーに遭遇しました。CSRF 検証に失敗しました。
-
django store to databaseは現地時間より8時間短い?(2021-05-12更新)
-
Django ForeignKey逆引きクエリにおけるfilterと_setの効率比較
-
[解決済み] Django のクエリで OR フィルタを行うにはどうすればよいですか?
-
[解決済み] Djangoテンプレート内でコレクションのサイズを確認するにはどうすればよいですか?
-
[解決済み] Django Southを使用して移行履歴をリセットするための推奨される方法は何ですか?
-
[解決済み] django で複数のオブジェクトを削除する
-
[解決済み] Django の DoesNotExist 例外はどのようにインポートしますか?
-
[解決済み] Django で https 接続を非 https 接続と同じように簡単にテストするには 'runserver' を使うには?