Django:管理会话变量以控制浏览器的后退按钮

0 投票
1 回答
1426 浏览
提问于 2025-04-16 02:56

我正在创建一个基于网页的模拟测试卷,这个测试需要相对安全。

具体需求是: 每个问题只能尝试和回答一次。 所有的问题都是选择题。 一旦回答了一个问题并按下提交按钮,那么这个问题就不能再出现了,无论是通过后退按钮还是其他方式。

如果浏览器崩溃或者系统崩溃,学生应该能够返回到最后一个正在尝试但还没有回答和提交的问题。

在使用Django实现这个功能时,应该采取什么样的最佳策略?如何在按下提交按钮后自动结束会话?还有,如何确保通过按后退按钮无法访问已经尝试和回答过的问题?

我尝试过在网上搜索,但找不到能更好指导我的资源。我看过Django会话的文档,但不确定自己是否知道正确的方法。任何建议都能帮助我。

1 个回答

3

那么,如何确保用户按下返回按钮后,无法访问已经尝试并回答过的问题呢?

可以使用“提交-重定向-获取”的方法。 http://en.wikipedia.org/wiki/Post/Redirect/Get

一旦按下提交按钮,如何自动结束会话?

这个问题其实不太合理。你并不需要“结束”会话。你需要做两件事。

  1. 更新数据库中这个用户的记录,标明他们完成了多少内容。

  2. 更新会话信息,标明他们完成了多少内容。

不要试图去“结束”会话。要保持会话信息(以及底层数据库)的正确性。

结束会话只会让他们重新登录——这只是让人烦恼而已。而且,当他们再次登录时,数据库必须是正确的,否则他们会重新开始测试。所以,你只需要保持数据库和会话信息的一致性。

撰写回答