如何使用浏览器“后退按钮”限制用户返回上一页(重定向到另一页)?

时间:2011-12-20 02:42:15

标签: django http django-views

我正在开发一个允许用户发布一些数据的网站。要成功添加新帖子,用户需要经历三种状态:表单 - >预览 - >发布页面。我想限制用户在访问已发布页面时使用浏览器“后退按钮”返回预览页面(相反,应将其重定向到空的表单页面)。如何在Django中实现此行为?

3 个答案:

答案 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.   
  3. 服务器验证数据。如果它无效,则会再次显示该表单,并显示错误消息。如果它有效,则服务器保存   后端向导的当前状态并重定向到   下一步。
  4.   
  5. 对于向导中的每个后续表单重复步骤1和2。
  6.   
  7. 一旦用户提交了所有表单并且所有数据都已经过验证,向导将处理数据 - 将其保存到   数据库,发送电子邮件或应用程序需要做的任何事情。
  8.