如何在django模板中创建计时器javascript组件

如何在django模板中创建计时器javascript组件,javascript,python,django,Javascript,Python,Django,我正在尝试使用django创建一个在线考试。我使用了一个倒计时javascript计时器来告诉时间何时结束 但问题是:每次我转到下一个问题页面,计时器都会重新启动 有没有办法让时间在刷新页面后继续 这是我的模板代码(有计时器) 提前感谢在我看来,最简单的方法就是使用AJAX并替换当前页面中的表单。这样您就不必刷新,计时器将继续运行。它还可以更快地加载下一个表单 最容易实现的方法是在POST参数中传递当前计时器值,然后在下一页使用该计时器值重新启动计时器 使用ajax(可能通过类似django

我正在尝试使用django创建一个在线考试。我使用了一个倒计时javascript计时器来告诉时间何时结束

但问题是:每次我转到下一个问题页面,计时器都会重新启动

有没有办法让时间在刷新页面后继续

这是我的模板代码(有计时器)



提前感谢

在我看来,最简单的方法就是使用AJAX并替换当前页面中的表单。这样您就不必刷新,计时器将继续运行。它还可以更快地加载下一个表单

最容易实现的方法是在POST参数中传递当前计时器值,然后在下一页使用该计时器值重新启动计时器

使用ajax(可能通过类似django的库)似乎是一个不错的方法,并且在一个页面上设置计时器(随着问题的进展,计时器会不断更新)

此外,如果以任何方式使用此在线测试(例如,作为一个类的测验分数),您应该在服务器上记录初始和最终时间戳,并仅通过该差异(可能需要额外几秒钟来说明通信延迟)。一般来说,您不能相信运行的javascript没有被修改。它仍然可以方便地让他们知道还剩多少时间,但请记住,所有客户端java脚本都很容易被用户修改以给自己更多的时间。

这就是我所做的

你知道他们什么时候开始测试,你知道他们需要多长时间,所以当测试开始时,计算预期的结束时间,并将其存储在某个地方(数据库等)。将结束时间作为变量传递给模板,并在javascript中使用它来计算剩余时间。由于页面之间的结束时间总是相同的,所以您不必担心在表单之间传递值

如果您在表单之间传递值或设置cookie,那么您将使某些人很容易破解测试,从而给自己更多的时间。将该值存储在幕后,而不在页面上更改,将使黑客更难破解。他们仍然可以破解javascript计时器,但这很好,因为在提交每个问题后,您只需检查当前时间是否大于结束时间,如果大于结束时间,则您知道时间已过,可以结束测试

如果你使用像jquery这样的插件,你的生活也会变得更轻松


希望有帮助。

使用会话存储日期\时间

如果变量不存在,则首先创建变量,例如:

import datetime
#Store the current time in session  
if 'time_started' not in request.session:   
    request.session['time_started'] = datetime.datetime.today()
要读取您刚刚使用的值

time_started = request.session['time_started']
如果需要删除time_started变量,可以使用以下命令:

del request.session['time_started'] #delete time_started variable in session

您可以使用Javascript设置cookie,但如果这是用于在线考试,则根本无法正常工作。当用户进入下一页时,是否单击按钮并发送表单?您可以通过POST参数发送该值,并在下一页获取该值。
del request.session['time_started'] #delete time_started variable in session