我正在开发一个允许用户发布一些数据的网站。要成功添加新帖子,用户需要经历三种状态:表单 - >预览 - >发布页面。我想限制用户在访问已发布页面时使用浏览器“后退按钮”返回预览页面(相反,应将其重定向到空的表单页面)。如何在Django中实现此行为?
答案 0 :(得分:3)
我不确定您是如何从Django获得这种期望的行为,因为您对用户的浏览器的控制有限。但是,在Javascript中您可以使用:
window.location.replace(url);
将删除历史记录,从而阻止后退按钮工作。
请参阅此窗口位置的堆栈溢出问题:
What's the difference between window.location= and window.location.replace()?
一个想法:从您的预览页面,使用AJAX提交,如果一切成功,请将window.location.replace提交到您发布的页面。
答案 1 :(得分:0)
我不能说如何使用浏览器技术来解决这个问题,但是使用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")
答案 2 :(得分:-1)
django的form wizard应该做你想做的事:
工作原理
以下是用户如何使用向导的基本工作流程:
- 用户访问向导的第一页,填写表单并提交。
- 服务器验证数据。如果它无效,则会再次显示该表单,并显示错误消息。如果它有效,则服务器保存 后端向导的当前状态并重定向到 下一步。
- 对于向导中的每个后续表单重复步骤1和2。
- 一旦用户提交了所有表单并且所有数据都已经过验证,向导将处理数据 - 将其保存到 数据库,发送电子邮件或应用程序需要做的任何事情。
醇>