我知道有timesince
过滤器。
但我想要返回这个的东西:
- 就在几秒钟前
- X 分钟前
- X 小时前
- 在 $day_name
- X 周前
- X 个月前
例子:
- 就在几秒钟前
- 37 分钟前
- 2小时前
- 昨天
- 星期四
- 1周前
- 7个月前
我怎样才能实现这样的事情?
我知道有timesince
过滤器。
但我想要返回这个的东西:
例子:
我怎样才能实现这样的事情?
不确定它是否勾选了所有框,但 django.contrib.humanize 模板标签中有一个标签naturaltime应该这样做:
https://docs.djangoproject.com/en/dev/ref/contrib/humanize/#naturaltime
设置.py
INSTALLED_APPS = {
...
'django.contrib.humanize',
}
模板.html
{% load humanize %}
{{ model.timefield|naturaltime }}
编辑:如果您使用最近的 Django SVN 结帐(1.3 后),请参阅 Pastylegs 的答案。否则,您可以执行以下操作:
为此,我使用repoze.timeago。代码相当简单,因此您可以根据需要对其进行自定义。
elapsed
这是我创建的一个 Django 自定义过滤器,它使用 repoze.timeago。
import datetime
from django import template
import repoze.timeago
register = template.Library()
# If you aren't using UTC time everywhere, this line can be used
# to customize repoze.timeago:
repoze.timeago._NOW = datetime.datetime.now
@register.filter(name='elapsed')
def elapsed(timestamp):
"""
This filter accepts a datetime and computes an elapsed time from "now".
The elapsed time is displayed as a "humanized" string.
Examples:
1 minute ago
5 minutes ago
1 hour ago
10 hours ago
1 day ago
7 days ago
"""
return repoze.timeago.get_elapsed(timestamp)
elapsed.is_safe = True