如何显示“x天前”在 Django 模板中使用 Humanize 输入时间?
当我这样做时:
{% load humanize %}
{{ video.pub_date|naturaltime|capfirst }}
我得到2天,19小时前
我怎样才能得到没有时间的2天。基本上,如果视频是在不到一天前发布的,那么它应该说 X 小时前,那么它应该以天数计算,比如 X 天前,然后以周为单位。我只是不想要 1 小时 5 分钟前或 2 天 13 分钟前。只是第一部分。
我查看了 humanize 文档,但找不到我需要的东西。
When I do this:
{% load humanize %}
{{ video.pub_date|naturaltime|capfirst }}
I get 2 days, 19 hours ago
How can I get just 2 days without the hours. Basically if the video was published in less than a day ago then it should say X hours ago, then it should count in days like X days ago, then in weeks. I just don't want 1 hours 5 minutes ago or 2 days 13 minutes ago. Just the first part.
I looked at the humanize docs but couldn't find what I needed.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
Django 有 内置模板过滤器
timesince
提供与上面提到的相同的输出。以下过滤器仅删除逗号后的第二部分:Django has a built-in template filter
timesince
that offers the same output you mentioned above. The following filter just strips the second part after the comma:现代 django 中有
naturaltime
。给定的
现在
是2007年2月17日16:30:00
。它将
16 Feb 2007 13:31:29
更改为1 天 2 小时前
。https://docs.djangoproject.com/en/2.2/ref /contrib/人性化/#naturaltime
There is
naturaltime
in modern django.Given
now
is17 Feb 2007 16:30:00
.It changes
16 Feb 2007 13:31:29
to1 day, 2 hours ago
.https://docs.djangoproject.com/en/2.2/ref/contrib/humanize/#naturaltime
您应该复制 django.contrib . humanize.templatetags. humanize.py 到 myapp.templatetags.my humanize 并根据您的需要进行修改。 (我找不到返回“x 天,y 小时前”的实际行。您使用的是哪个版本的 django/ humanize?)
You should duplicate your django.contrib.humanize.templatetags.humanize.py to myapp.templatetags.myhumanize and modify it to your needs. (I can't find the actual line that returns "x days, y hours ago". Which version of django/humanize are you using?)
您现在还可以使用 ExpressionWrapper 或 Case/When 来利用查询集和数据库直接对其进行格式化。
示例输出,与我脑海中浮现的复数日/天相结合:
You can also now use an ExpressionWrapper or Case/When that will utilize the queryset and database to format it directly.
Example output, in combo with day/days pluralized off the top of my head: