Django创建模板过滤器来度过美好时光

问题描述

|| 我知道这里有
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