Python中如何去掉Django时间过滤器timesince输出中的逗号?
django 的时间过虑器 timesince .一般是这样:5 小时,16 分钟 , 4 小时,20 分钟 中间那个豆号怎么去掉?
我看 V2EX 的都是 3 小时 7 分钟 , 8 小时 21 分钟 这样的.
这个要重写 django 代码?自已写个过虑器还是在哪里改?
Python中如何去掉Django时间过滤器timesince输出中的逗号?
9 回复
这个东西还是写在浏览器端而不是服务端好点
from django import template
from django.utils.timesince import timesince
from django.utils.timezone import now
import datetime
register = template.Library()
@register.filter
def timesince_without_comma(value):
"""
自定义时间过滤器,移除timesince输出中的逗号
例如:"2 days, 4 hours" → "2 days 4 hours"
"""
if not value:
return ''
# 使用原生的timesince函数
time_str = timesince(value, now())
# 移除所有逗号
return time_str.replace(',', '')
# 使用示例:
# 在模板中:{{ some_datetime|timesince_without_comma }}
使用方法:
- 在某个app下创建
templatetags文件夹(如果不存在) - 在
templatetags文件夹中创建__init__.py文件 - 创建自定义过滤器文件(如
custom_filters.py),将上面的代码复制进去 - 在模板中加载并使用:
{% load custom_filters %}
{{ post.created_at|timesince_without_comma }}
替代方案: 如果不想创建自定义过滤器,也可以在视图函数中处理:
from django.utils.timesince import timesince
def your_view(request):
time_str = timesince(some_datetime).replace(',', '')
# 传递给模板...
核心原理: Django的timesince函数返回的是带逗号的字符串,我们只需要在显示前移除所有逗号即可。
总结:创建自定义过滤器是最干净的解决方案。
不知道他用的是 不是自写的过虑器.
自己定义一个 filter 呗
楼上+1,自定义过滤器不复杂。可行
这个前端怎么处理? 能给个大体思路不?
传时间给前端 前端用 moment.js 格式化
谢谢


