私はユーザーがデータを投稿できるサイトを作っています。新しい投稿を追加するには、ユーザーはフォーム - >プレビュー - >投稿ページの3つの状態を通過する必要があります。私は、すでに「投稿済み」ページに到達した後、ブラウザの「戻るボタン」を使ってプレビューページに戻ることをユーザーに制限したい(代わりに、空のフォームページにリダイレクトする必要があります)。どのように私はDjangoでこの動作を実装できますか?ブラウザ「戻るボタン」(別のページにリダイレクトする)を使用して、前のページに戻ることを制限する方法はありますか?
答えて
あなたがユーザーのブラウザを制限してコントロールしているので、Djangoからこのような動作を得る方法がわかりません。しかし、JavaScriptであなたが使用することができます。
window.location.replace(url);
ので作業から戻るボタンを防止すること、歴史を削除しますました。
What's the difference between window.location= and window.location.replace()?
アイデア:あなたのプレビューページから、提出し、すべてが成功した場合、あなたの投稿のページへwindow.location.replaceするためにAJAXを使用し
は、ウィンドウの位置については、このスタックオーバーフローの質問を参照してください。
これはブラウザ技術を使って対処する方法については話すことができませんが、djangoではセッションでフラグを設定するだけで済みます。
# posted_page view
request.session['posted_page_visited'] = True
# preview_page view
if request.session.get('posted_page_visited'):
del request.session['posted_page_visited']
return http.HttpResponseRedirect("form_page")
Djangoのform wizardあなたが欲しいものを行う必要があります。
- ユーザー訪問:それはここでは
仕組み
は、ユーザーがウィザードを使用する方法のための基本的なワークフローですウィザードの最初のページで、フォームに記入して提出します。
- サーバーはデータを検証します。無効な場合は、エラーメッセージとともにフォームが再度表示されます。有効な場合、サーバーは のバックエンドに現在の状態を保存し、 次の手順にリダイレクトします。
- ステップ1と2は、ウィザードの後続のフォームごとに繰り返します。
- ユーザーがすべてのフォームを送信し、すべてのデータが検証されると、ウィザードでデータが処理されます。 データベースに保存したり、電子メールを送信したり、アプリケーションが行う必要があるすべてのデータを処理します。
あなたの解決策が私の質問に全く答えていないので、あなたは私の質問を持っていないと思います。私の実装は既にDjangoのフォームプレビューアプリを採用しているので、ワークフローはそこにあります。 – tamakisquare
フォームのプレビューはフォームウィザードとは異なり、重要な部分はセッション管理です。私はあなたの問題を理解しています。 –
- 1. ブラウザの戻るボタンの前のページを設定します
- 2. JSFを使用して前のページに戻る方法
- 3. ブラウザ(IE、Chrome、Firefox Safari)の戻るボタンを押すと、ページを更新する方法はありますか?
- 4. ページ内のボタンを押すと、ブラウザの戻るボタンイベントを発生させる方法はありますか?
- 5. ブラウザでAndroidの戻るボタンをクリックすると、oauthがブラウザに戻ります
- 6. ブラウザの戻るボタンと前のページのURL
- 7. 前のページに戻る方法
- 8. グリッドビューのボタンをクリックして別のページにリダイレクトする方法
- 9. 私が残したページを示すブラウザの戻るボタンを止める方法
- 10. 戻るボタンを使用してメインビューに戻ります
- 11. ブラウザに戻ると、サイトをリロードします。戻るボタン
- 12. PHPを使用して別のページにリダイレクトする方法
- 13. ブラウザの戻るボタンを制御する方法
- 14. 戻るボタンを別のページに移動する
- 15. jQuery Mobile NavBar前のページの戻るボタン
- 16. ログアウト後に戻るボタンをクリックしたときにログインページにリダイレクトする方法はありますか?
- 17. 制限とオフセットを使用してデータをページする方法
- 18. djangoを使用して検索結果を別のページにリダイレクトする方法はありますか?
- 19. response.sendRedirect()メソッドを使用してサーブレットの別のページにリダイレクトする方法はありますか?
- 20. 404.phpページのリダイレクトの前に自分のページにリダイレクトする方法はありますか?
- 21. JSの前のページに戻るときにビデオを再生する方法
- 22. WPFのあるページから別のページにリダイレクトするには
- 23. ブラウザの戻るボタンまたは進むボタンを使用してキャッチする
- 24. 戻るボタンをダブルクリックすると、サイトは2ページ分戻されます
- 25. 別のページから別のASP.NETページを呼び出してそのページに戻る方法
- 26. あるページから別のページへのオートメーションのやり方と、最初のページに戻るページのhtmlのページにあるページ番号
- 27. 戻るボタンからページを訪問したときにページを強制的に更新する
- 28. ブラウザの戻るボタンが押されたときにエラーページにリダイレクトしますか?
- 29. 戻るボタンの更新ページ
- 30. backbone.jsを使用して送信ボタンをクリックすると別のページにリダイレクト
私は確かにあなたのアプローチを試みましたが、別の問題があります。 「戻るボタン」をクリックしてプレビューページに戻ると、ページのヘッダーに 'Cache-Control:no-cache'を指定しても、サーバーから何らかの形でページがロードされません。プレビューページを強制的にどのように強制することができるかについての考え方は、常にサーバーからロードされますか?どうも。 – tamakisquare