2

私はDjango チュートリアルの 4 ページ目の開始近くにいて、ビューを見ていvoteます。ビューの最後は次のとおりです。

# Always return an HttpResponseRedirect after successfully dealing
# with POST data. This prevents data from being posted twice if a
# user hits the Back button.

の代わりにvote通常のビューを試してみたところ、ユーザーが更新ボタンを押した場合に重複送信が発生する可能性が低くなるように、POST の後にブラウザーにリダイレクトを返す必要があることがわかりました。(Opera は「データを再送信しようとしています」という警告を出さないことに気付きました!)。HttpResponseHttpResponseRedirect

しかし、それは更新ボタンです-戻るボタンの問題がどのように表示されるかわかりません。私は何が欠けていますか?

4

1 に答える 1

4

別のページに進んでから戻ると、POSTリクエストが履歴に記録されます。転送してから戻ると、実質的に更新と同じになります。

リダイレクトがない場合、履歴に保存されているように、行われる必要のあるリクエストのリストは次のようになります。

  • GET / poll / 1 /
  • POST / poll / 1 /vote/
  • GET / something-else /

リダイレクトを使用すると、POSTリクエストが省略され、リダイレクト先が代わりに使用されます。

  • GET / poll / 1 /
  • GET / poll / 1 / results /
  • GET / something-else /
于 2012-07-27T14:23:24.990 に答える