如何在Django后端制作触发器?

时间:2019-05-16 04:47:57

标签: python django triggers backend

我正在开发一个个人项目,教师帐户可以为学生帐户设计自己的多项选择考试。 考试班级属性之一是exam_time,这是一个整数属性,它设置了学生在进行考试时提供的分钟数。 当学生开始进行考试时,“学生”类有两个重要字段,一个是running_exam,用于设置该学生当前正在执行的考试ID,另一个是exam_time,该整数存储该学生还剩下几秒钟。

def start_exam(request, exam_id):
    exam = Exam.objects.get(id=exam_id, students=Student.objects.get(email=request.user.email))
    if exam:
        Student.objects.filter(email=request.user.email).update(
            doing_exam=exam.id,
            exam_time=exam.time*60,
        )
        return etc...

现在,我需要一种方法来每秒触发一个事件以更新学生的exam_time字段,每秒减去-1并检查它是否不为0。 另一种方法是使用JavaScript进行此操作,但由于它是纯前端,因此可能非常脆弱。 有建议吗?

1 个答案:

答案 0 :(得分:1)

您可以使用jQuery完成此操作。像这样:

<script>
var duration = {{ exam_time }} * 100
var qTimer = duration, seconds, dispms;

function startTimer(duration, display) {
    questionTimer = setInterval(function () {
        seconds = parseInt(qTimer / 100, 10);
        dispms =  parseInt(qTimer % 100, 10);
        seconds = seconds < 10 ? "0" + seconds : seconds;
        dispms = dispms < 10 ? "0" + dispms : dispms;

        display.textContent =  seconds+":"+dispms;

        if (--qTimer < 0) {
            clearInterval(questionTimer);
            display.textContent = "";
            qTimer = -1;
            window.location = {% url 'next-screen' %}
        }
    }, 10);
}

var display = document.querySelector('#time'); /* time is an id for a span/div where the time remaining is displayed */
startTimer(duration, display);

</script>