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

Gre*_*reg 10 python django

我有这个变量:

{{ video.pub_date }}
Run Code Online (Sandbox Code Playgroud)

哪个输出:

May 16, 2011, 2:03 p.m.
Run Code Online (Sandbox Code Playgroud)

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

1 month ago
Run Code Online (Sandbox Code Playgroud)

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

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

它只是说它可能在页面的底部.

Tim*_*ony 23

您必须使用Django的开发版本才能使用自然时间过滤器

{% load humanize %}
{{ video.pub_date|naturaltime }}
Run Code Online (Sandbox Code Playgroud)

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

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

{{ video.pub_date|timesince }}
Run Code Online (Sandbox Code Playgroud)


Fac*_*sco 6

{{ video.pub_date|timesince }} ago
Run Code Online (Sandbox Code Playgroud)

有时从文档中

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

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

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

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