2017-12-25 10 views
0

トークンは10分以上前に作成されたのであれば、私はトークンの間の経過時間を確認したいmodels.pyモデルオブジェクトの作成時間からの時間が10分を超えるかどうかを確認するにはどうすればよいですか?

@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 

は現在の時間とを作成し、私は、このトークンが無効であることを認識することができます。

views.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間の時間が10mins以上であるかどうかを確認することができますか?

答えて

2

あなたはいつもdjango.utils.timezoneを使用して、現在の時刻からのデルタを計算することができます。

from django.utils.timezone import now, timedelta 

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

しかし、私はあなたがDjangoのCryptographic signingを見てみましょうお勧めします。それはあなたにverify timestamped signaturesをさせ、すべてのデルタ計算を処理します。

関連する問題