Проверка окончания времени викторины в django
Я хочу проверить, закончилось ли время, пока пользователь отвечает на вопросы викторины, и если время закончилось, пользователь будет перенаправлен на другую страницу. Проблема в том, что я не могу найти способ начать процесс проверки без перезагрузки страницы. Если есть способ заставить это работать или если есть другой способ лучше, чем этот, я весь внимание, спасибо заранее
models.py
class Quiz(models.Model):
name = models.CharField(max_length=30)
start_date = models.DateField(null=True, blank=True)
start_time = models.TimeField(null=True, blank=True)
duration = models.IntegerField(null=True,blank=True)
quiz_images = models.ImageField(upload_to=PathAndRename("images\\quiz_images"), default="images\\quiz_images\\default.png")
slug = models.SlugField(max_length=8, null=True, blank=True)
course = models.ForeignKey(Course, on_delete=models.CASCADE)
prof = models.ForeignKey(User, on_delete=models.SET_NULL, null=True,limit_choices_to={'is_prof':True})
class Meta():
constraints = [
models.UniqueConstraint(fields=['name','course'],name='unique course')
]
def __str__(self):
return f"{self.name}/{self.course.name}"
def save(self, *args, **kwargs):
if not self.slug:
self.slug = slug_generator(self)
super().save(*args, **kwargs)
image_resize(self.quiz_images.path)
def get_absolute_url(self):
return reverse('create-quiz-question', kwargs={'slug': self.slug})
@property
def get_end_time(self):
q_time=datetime.combine(self.start_date,self.start_time)
return q_time+timedelta(minutes=self.duration)
@property
def is_open(self):
if datetime.utcnow() > self.get_end_time:
return False
return True
@property
def get_quiz_grade(self):
total = 0
for question in self.questions.all():
total += question.grade
return total
views.py
def quiz_view(request,slug):
quiz = Quiz.objects.filter(slug=slug).first()
form = AnswerQuizForm(questions=quiz.questions.all())
# if not quiz.is_open:
# if form.data:
# form = AnswerQuizForm(data=request.POST,questions=quiz.questions.all(),user=request.user)
# if form.is_valid():
# attemp=form.save()
# attemp.quiz=quiz
# attemp.save()
# return redirect('home')
if request.method == 'POST':
form = AnswerQuizForm(data=request.POST,questions=quiz.questions.all(),user=request.user)
if form.is_valid():
attemp=form.save()
attemp.quiz=quiz
attemp.save()
context = {
'quiz': quiz,
'form': form
}
return render(request,'quiz/show.html',context=context)