如何在Django模板中显示漂亮的持续时间?

时间:2014-05-03 21:55:34

标签: django django-templates

我想在我的Django模板中编写持续时间。 此持续时间将是now()与我视图中的输入日期之间的差异。

困难之处在于我想以智能方式实现这一目标。例如:

  • 如果持续时间< 60分钟,它应显示“xx 分钟前”
  • 如果持续时间&gt; 1小时和<1小时1天,它应显示“xx 小时以前”
  • 以及“天”,“月”,“年”等。
Facebook发布消息有这种行为。 写这篇新闻“2567分钟前发布”是没有意义的,对吗?

问题是,你如何建议我在Django中这样做? 我一直在寻找自定义模板或过滤器而没有找到任何东西。

自定义标签怎么样?还是直接用经典的Python方法? 因为我不喜欢重新发明轮子,所以欢迎任何lib或片段,当然:)

非常感谢。

1 个答案:

答案 0 :(得分:1)

你可以使用Django的built-in template filter timesince。如果没有参数使用,我认为它正是你所描述的。

如果你想要一点“人”时间,例如“一小时前”而不是“1小时前”,你可以尝试naturaltime filter from django.contrib.humanize,虽然它只能用于秒,分钟和小时。