Django 提示:AttributeError : ‘module‘ object has no attribute ‘utcnow‘

快来打我* 2023-10-10 13:13 86阅读 0赞

问题描述:今天使用Django+pyjwt 实现前后端分离基于token 凭证方式,我在实体对象(User)定义生成token 相关方法,核心代码如下:

models.py

  1. from django.conf import settings
  2. from django.db import models
  3. import jwt
  4. import datetime
  5. # Create your models here.
  6. class Book(models.Model):
  7. id = models.BigAutoField(primary_key=True)
  8. name = models.CharField(max_length=255, null=True)
  9. cover = models.CharField(max_length=255)
  10. author = models.CharField(max_length=255)
  11. price = models.DecimalField(decimal_places=2, max_digits=100000)
  12. is_delete = models.IntegerField()
  13. class Meta:
  14. managed = False
  15. db_table = 'book'
  16. class User(models.Model):
  17. id = models.BigAutoField(primary_key=True)
  18. name = models.CharField(max_length=255, null=True)
  19. passwd = models.CharField(max_length=255, null=True)
  20. @property
  21. def token(self):
  22. return self._generate_jwt_token()
  23. def _generate_jwt_token(self):
  24. token = jwt.encode({
  25. 'exp': datetime.utcnow() + datetime.timedelta(days=1),
  26. 'iat': datetime.utcnow(),
  27. 'data': {
  28. 'name': self.name
  29. }
  30. }, settings.SECRET_KEY, algorithm='HS256')
  31. return token.decode('utf-8')
  32. class Meta:
  33. managed = False
  34. db_table = 'user'

上述代码会提示相关错误信息:’module’ object has no attribute ‘utcnow’

解决办法:

方式一:

  1. import datetime
  2. datetime.datetime.utcnow()

方式二: 我选用的方式

  1. from datetime import datetime
  2. datetime.utcnow()

修改后的代码片段截图

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3pob3V6aGl3ZW5nYW5n_size_16_color_FFFFFF_t_70

发表评论

表情:
评论列表 (有 0 条评论,86人围观)

还没有评论,来说两句吧...

相关阅读