如何检查创建模型对象的时间是否超过10分钟?

2024-06-24 13:12:41 发布

您现在位置:Python中文网/ 问答频道 /正文

型号.py

@python_2_unicode_compatible
class UserAuthToken(models.Model):

    email = models.ForeignKey(UserSubEmail)
    token = models.CharField(max_length=34, unique=True)
    created = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return "AuthToken for %s" % self.email

我想检查令牌的创建时间和现在之间经过的时间,所以如果令牌在10分钟之前创建,我可以识别出该令牌无效

视图.py

def create_email_confirm_key(request, uid, token):
    try:
        user_authtoken = UserAuthToken.objects.get(uid=uid)
    except (TypeError, ValueError, OverflowError, User.DoesNotExist):
        user_authtoken = None

    if not 'user_authtoken is created before more than 10minutes' :
        This token is valid and do something

如何检查the token creatednow之间的时间是否超过10分钟


Tags: pyselftokentrueuidismodelsemail
1条回答
网友
1楼 · 发布于 2024-06-24 13:12:41

始终可以使用^{}从当前时间计算增量:

from django.utils.timezone import now, timedelta

if now() - user_authtoken.created <= timedelta(seconds=10*60):
    # token valid

但我建议你看看django的Cryptographic signing。它允许您verify timestamped signatures并为您处理所有增量计算

相关问题 更多 >