Python 如何显示";“x天前”;在Django模板中使用人性化输入时间?
当我这样做时:Python 如何显示";“x天前”;在Django模板中使用人性化输入时间?,python,django,humanize,Python,Django,Humanize,当我这样做时: {% load humanize %} {{ video.pub_date|naturaltime|capfirst }} 我在两天19小时前收到了 我怎么能只有两天没有时间。基本上,如果视频是在不到一天前发布的,那么它应该是X小时前,然后它应该像X天前一样以天计算,然后以周计算。我只是不想1小时5分钟前或2天13分钟前。只是第一部分 我查看了人性化文档,但找不到我需要的内容。您应该将您的文件复制到myapp.templatetags.myhumanize,并根据需要进行修改
{% load humanize %}
{{ video.pub_date|naturaltime|capfirst }}
我在两天19小时前收到了
我怎么能只有两天没有时间。基本上,如果视频是在不到一天前发布的,那么它应该是X小时前,然后它应该像X天前一样以天计算,然后以周计算。我只是不想1小时5分钟前或2天13分钟前。只是第一部分
我查看了人性化文档,但找不到我需要的内容。您应该将您的文件复制到myapp.templatetags.myhumanize,并根据需要进行修改。(我找不到返回“x天,y小时前”的实际行。您使用的是哪个版本的django/humanize?django的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]}
从datetime导入datetime,timedelta
从django导入模板
从django.utils.timesince导入timesince
register=template.Library()
@寄存器过滤器
def年龄(值):
now=datetime.now()
尝试:
差异=现在-值
除:
返回值
如果差异您现在还可以使用ExpressionWrapper或Case/When,这将利用queryset和数据库直接格式化它
示例输出,以天/天的复数形式组合在我的头顶上:
overdue = ExpressionWrapper(timezone.now() - F('due_date'), output_field=fields.DurationField())
objects = Activity.objects.all().order_by('-due_date').annotate(overdue=overdue)
现代django中有naturaltime
现在给定的是2007年2月17日16:30:00
它将2007年2月16日13:31:29更改为2小时前的1天
{# some_template.html #}
{% load humanize %}
{{ past_time | naturaltime }}
我建议不要复制和修改代码。这可能会破坏新版本的内容。这不提供X天前的内容,只提供“今天”、“昨天”等。我只是说,很高兴知道django内置的naturaltime
。像人性化
它计算2007年2月16日13:31:29
->1天,2小时前。