Как остановить сброс таймера с помощью Django и AJAX? - PullRequest
0 голосов
/ 23 апреля 2020

Я пытаюсь остановить сброс таймера, когда пользователь обновляет страницу. Я не хочу использовать куки или локальное хранилище, я хочу хранить, сколько осталось в базе данных. Я использую Django и Ajax. Я не до конца понимаю, как это сделать, я пытался отправить оставшееся для просмотра количество, используя AJAX POST-запрос, но я получаю, что его None, следовательно, он не сохраняется в базе данных. Я не до конца понимаю, где разместить вызов AJAX в моем JS и как использовать запрос GET AJAX. Как я могу получить значение из базы данных и использовать его в моем таймере, когда пользователь обновит sh страницу?

шаблон. html

const TIME_LIMIT = 30;
    let timePassed = 0;
    let timeLeft = TIME_LIMIT;
    let timerInterval = null;
startTimer()
        function startTimer() {
            timerInterval = setInterval(() => {
                    timePassed = timePassed += 1;
                    timeLeft = TIME_LIMIT - timePassed;
                    seconds_left = timeLeft/100 
                    document.getElementById("base-timer-label").innerHTML = formatTime( timeLeft);

                    $.ajax({
                            type: "POST",
                            url: server_url+ '/study/attention_view',
                            data: {'seconds_left' : seconds_left},
                            success: function () {
                                console.log('seconds_left:', seconds_left);
                                    }
                            });
                    setCircleDasharray();
                    setRemainingPathColor(timeLeft);
                    if (timeLeft === 0) {
                        onTimesUp();
                                }
                            }, 1000);
                            }

            function formatTime(time) {
                let seconds = time % 60;

                if (seconds < 10) {
                    seconds = `0${seconds}`;
                            }
                    return `${seconds}`;
                            }

                                            }

model.py

class Participant(models.Model): 
    user = models.OneToOneField(User, on_delete=models.CASCADE, null=True)
    seconds_left = models.FloatField(default=0)

view.py

def attention_view(request):
 participant = get_object_or_404(Participant, user=request.user)
 if request.method == 'POST':
  seconds_left = request.POST.get('seconds_left')
  participant.seconds_left=seconds_left
  participant.save()
 seconds_left = participant.seconds_left
 return render(request, 'study/AttentionCheck.html', {'seconds_left': seconds_left})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...