Django 在我们的投票问题中我怎么能有计时器?德扬戈
我们有一组最多20个问题的调查问题,但我们最多可以选择5个随机问题,每个阶段一个,但我不希望人们能够通过验证客户端来欺骗时间,但每个问题都有1分钟的时间,一旦过期,下一个问题将被删除 模型Django 在我们的投票问题中我怎么能有计时器?德扬戈,django,rest,django-rest-framework,Django,Rest,Django Rest Framework,我们有一组最多20个问题的调查问题,但我们最多可以选择5个随机问题,每个阶段一个,但我不希望人们能够通过验证客户端来欺骗时间,但每个问题都有1分钟的时间,一旦过期,下一个问题将被删除 模型 import datetime from django.db import models from django.utils import timezone class Question(models.Model): question_text = models.CharField(max_le
import datetime
from django.db import models
from django.utils import timezone
class Question(models.Model):
question_text = models.CharField(max_length=200)
duration = models.IntegerField(min=0, max=60)
code = models.TextField(max_length=1024*2,default='SOME STRING')
def __str__(self):
return self.question_text
def was_published_recently(self):
now = timezone.now()
return now - datetime.timedelta(days=1) <= self.pub_date <= now
def choices(self):
if not hasattr(self, '_choices'):
self._choices = self.choice_set.all()
return self._choices
def max_voted_choice(self):
if not hasattr(self, '_max_voted_choice'):
choices = self.choice_set.order_by('-votes')
if not choices:
self._max_voted_choice = None
else:
self._max_voted_choice = choices[0]
return self._max_voted_choice
class Choice(models.Model):
question = models.ForeignKey(Question, on_delete=models.CASCADE)
choice_text = models.CharField(max_length=200)
votes = models.IntegerField(default=0)
def __str__(self):
return self.choice_text
序列化程序
class QuestionListPageSerializer(serializers.Serializer):
id = serializers.IntegerField(read_only=True)
question_text = serializers.CharField(max_length=200)
pub_date = serializers.DateTimeField()
was_published_recently = serializers.BooleanField(read_only=True) # Serializer is smart enough to understand that was_published_recently is a method on Question
code = serializers.CharField(max_length=200)
def create(self, validated_data):
return Question.objects.create(**validated_data)
def update(self, instance, validated_data):
for key, value in validated_data.items():
setattr(instance, key, value)
instance.save()
return instance
如果我正确理解了你的问题,你希望在有问题的页面上有一个倒计时的计时器 这看起来更像是应该用JavaScript实现的东西,而不是Django(类似这样的东西) 然后,使用ajax通过API调用将处理的任何操作发送到Django后端。这里有一个关于如何做这件事的教程 希望这能帮助你,或者为你指明正确的方向
class QuestionListPageSerializer(serializers.Serializer):
id = serializers.IntegerField(read_only=True)
question_text = serializers.CharField(max_length=200)
pub_date = serializers.DateTimeField()
was_published_recently = serializers.BooleanField(read_only=True) # Serializer is smart enough to understand that was_published_recently is a method on Question
code = serializers.CharField(max_length=200)
def create(self, validated_data):
return Question.objects.create(**validated_data)
def update(self, instance, validated_data):
for key, value in validated_data.items():
setattr(instance, key, value)
instance.save()
return instance