告诉我如何计算这样一个任务的时间差:当你更新帖子页面时,你需要看到帖子是在 5 分钟前,或者一个小时前更新的——一般来说,在一段时间之前。因此,如果用户处于不同的时区,则不会对他们造成任何影响。
class Post(GenericPage):
category = models.ForeignKey(Category, null=True, blank=True, on_delete=SET_NULL)
created_date = models.DateTimeField(default=now, verbose_name='publication date')
modified_date = AutoLastModifiedField()
short_description = models.TextField(blank=True, null=True)
infografic = models.ImageField(upload_to='blog/post/', null=True, blank=True)
image = models.ImageField(upload_to='blog/thumbnails/', null=True, blank=True)
related_posts = models.ManyToManyField('self', blank=True)
active = models.BooleanField(default=True, verbose_name='published')
5分钟在任何时区都是一样的,服务器上的差异计算为请求时间-根据服务器时间发布时间并已经传递到页面。
例如 - 发布时间(在服务器上)是 16:45 这对应于随机用户的时区的 18:45。
页面加载/刷新时间是服务器上的 17:00 和用户时区的 19:00。
17:00 - 16:45 = 15 分钟 19:00 - 18:45 = 15 分钟
那些。在此任务的上下文中,您可以从用户抽象
Django 已经为此提供了一个现成的库
django.contrib.humanize
:https ://docs.djangoproject.com/en/2.1/ref/contrib/humanize/#naturaltime您可以直接在模板中包含:
例如(如果“现在”是 2007 年 2 月 17 日下午 4:30:00):
2007 年 2 月 17 日 16:30:00 将变为 -现在。
2007 年 2 月 17 日 16:29:31 将是 - 29 秒前。
等等