python - 如何在 Django 模板中使用 Humanize 显示 "x days ago"类型时间?

标签 python django humanize

当我这样做时:

{% load humanize %}

{{ video.pub_date|naturaltime|capfirst }}

我得到 2 天 19 小时前

没有工作时间,我怎么能得到 2 天的工作时间。基本上,如果视频是在不到一天前发布的,那么它应该说 X 小时前,然后它应该以天数计算,例如 X 天前,然后以周为单位。我只是不想要 1 小时 5 分钟前或 2 天 13 分钟前。只是第一部分。

我查看了人性化文档,但找不到我需要的内容。

最佳答案

Django 有 a built-in template filter timesince 提供与上面提到的相同的输出。以下过滤器仅去除逗号后的第二部分:

from datetime import datetime, timedelta
from django import template
from django.utils.timesince import timesince

register = template.Library()

@register.filter
def age(value):
    now = datetime.now()
    try:
        difference = now - value
    except:
        return value

    if difference <= timedelta(minutes=1):
        return 'just now'
    return '%(time)s ago' % {'time': timesince(value).split(', ')[0]}

关于python - 如何在 Django 模板中使用 Humanize 显示 "x days ago"类型时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6494921/

相关文章:

Python MySQLdb 无法连接到服务器,SSL 问题

Python & Subprocess - 在不锁定的情况下监控进程

django - 在 Django 的模板中检查权限

Python 的人性化 timedelta() 告诉我 minimum_unit 是一个无效的参数吗?

ruby-on-rails - 如何在 Ruby on Rails 中获取人类可读的类名?

python - 关闭程序后不保存文本文件

python - Angular $routeProvider 不解析 django 变量

javascript - 防止以编程方式调用 django-rest-framework API

python - 在 Django 中将变量从模板传递到 View 的更有效方法是什么?

c# - 使用 .NET 格式化大数