如何使用Humanize在Django中显示“这几个月前”?

时间:2011-06-16 18:20:13

标签: python django

我有这个变量:

{{ video.pub_date }}

输出:

May 16, 2011, 2:03 p.m.

我怎样才能让它显示出来:

1 month ago

我已经在页面上加载了humanize,但用于人性化的django文档并没有真正展示如何实现它以显示我想要的内容:

https://docs.djangoproject.com/en/dev/ref/contrib/humanize/

它只是说在页面底部有可能。

3 个答案:

答案 0 :(得分:22)

您必须拥有Django的开发版才能使用naturaltime filter

{% load humanize %}
{{ video.pub_date|naturaltime }}

Humanize不是模板标签,它是template filters的库,这意味着当您加载它时,您可以访问模块中包含的各种其他过滤器。

或者,您可以使用timesince filter而无需加载任何其他模板标记库

{{ video.pub_date|timesince }}

答案 1 :(得分:3)

{{ video.pub_date|timesince }} ago

来自timesince

的文档
  

timesince

     

将日期格式化为此后的时间   日期(例如,“4天,6小时”)。

     

采用可选参数a   包含要用作日期的变量   比较点(没有   论证,比较点是   现在)。例如,如果blog_date是   表示午夜的日期实例   2006年6月1日,comment_date是一个   6月1日08:00的日期实例   2006年,然后{{   blog_date | timesince:comment_date}}   将返回“8小时”。

     

比较偏移 - 天真和   偏移感知日期时间将返回   空字符串。

     

分钟是使用的最小单位,和   “0分钟”将被退回   相对于未来的日期   比较点。

答案 2 :(得分:1)

激活什么过滤器。将django.contrib.humanize添加到您的INSTALLED_APPS设置中,

完成后,

在模板中使用{% load humanize %},您将可以访问以下过滤器,

{{comment.timestamp |自然时间}}