我正在 Django 中准备测试或测验。测验需要在特定的时间范围内完成。说 30 分钟 40 个问题。我总是可以在测试开始时启动时钟,然后在测验完成时计算时间。但是,在尝试期间,可能会出现互联网连接中断或系统崩溃/断电等问题。

我需要一种策略来找出此类事故何时发生,并停止时钟,然后让用户从停止的地方再次进行测试,然后再次启动时钟。

什么是正确的策略?任何帮助,包括示例代码/示例/想法都是最受欢迎的

最佳答案

您的策略应取决于测试的重要性和重新参加整个测试的能力。

  • 测试/测验是为了好玩还是能力/知识检查?
  • 你在处理登录用户吗?
  • 测试是从大量可用问题的调查中随机生成的吗?

  • 这些是您需要首先回答自己的问题。

    请记住:
  • 恶意用户 CAN 模拟连接中断/断电,
  • 唯一可以信任的时钟是服务器端的时钟
  • 浏览器端的一切都可以被操纵(想想 Firebug /控制台 js 注入(inject))

  • 我的方法是:
  • 告知用户 TIME 是重要因素,在评分时可能不会考虑连接问题...,
  • 只发 一个问题 ,等待回答,再发一个,
  • 整个测试时间应计算为每个回答时间的 SUM :
  • 保存每个“问题发送”/“答案收到”时间戳并从中计算答案时间,
  • 问题之间的时间不计算在内,
  • 你会得到额外的范围来解决哪些问题更难/需要更长的时间来回答。
  • 将某种 心跳 添加到您的问题页面(例如每 X 秒的 ajax 请求),当心跳停止时,您可以(取决于您拥有的选项):
  • 使问题无效并通过对话框通知用户他有连接问题,如果您有更多的问题要使用,则必须刷新以获取新问题,
  • 服务器端的暂停时间(例如昏暗的问题页面,因此用户在恢复连接之前无法回答)IMO 仅用于游戏/趣味测验/测试
  • 在每次中断时在服务器端保存信息,这将有助于稍后决定允许重新进行整个测试,例如他在第 20 个问题之前都很好,然后在连续 3-4 个简单的问题上他都掉了……
  • 关于python - 定时测验 : How to consider internet interruptions?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5995674/

    10-11 09:15