问题描述
||
我知道这里有
timesince
过滤器。
但是我想要返回以下内容的东西:
就在几秒钟前
X分钟前
X小时前
在$ day_name
X周前
X个月前
例子:
就在几秒钟前
37分钟前
2小时前
昨天
星期四
1周前
7个月前
我如何实现这样的东西?
解决方法
不知道它是否打勾了您所有的框,但是django.contrib.humanize模板标签中自然有一个标签可以执行以下操作:
https://docs.djangoproject.com/en/dev/ref/contrib/humanize/#naturaltime
settings.py
INSTALLED_APPS = {
...
\'django.contrib.humanize\',}
template.html
{% load humanize %}
{{ model.timefield|naturaltime }}
, 编辑:如果您正在使用Django的最新SVN检出(第1.3版),请参阅Pastylegs的答案。否则,您可以执行以下操作:
我为此使用repoze.timeago。该代码非常简单,因此您可以根据需要对其进行自定义。
这是我创建的使用repoze.timeago创建的名为elapsed
的Django自定义过滤器。
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