迄今为止的 Django 模板标签 ISO

Joo*_*ost 3 python django django-templates

在我看来,这个问题与这个问题类似,但又截然不同。

我有一个具有一些日期时间属性的对象。为了序列化它并存储为 JSON 字符串,我调用该.isoformat方法(使用自定义 JSON 编码器)。

相反,我希望 Django 模板标签能够为我解决这个问题。我有一个 JSON 对象,通过调用将其转换为字典json.loads2015-10-07T14:57:00.501597+00:00当我简单地将其称为 时,生成的属性具有值{{ my_object.date }}。然而,当我将它传递给date模板标记时,我根本没有得到任何输出。我正在尝试{{ my_object.date | date }},但也有类似的事情{{ my_object.date | date:'Y-m-d' }}

date 不能转换这些值吗?我清楚地记得在某个时候这样做过,但不确定具体细节。

有没有办法正确调试这个?现在我没有看到任何输出,日志中也没有出现任何内容。

dan*_*eia 6

为什么不在将其传递给模板之前将其转换为日期时间实例?然后您可以使用模板中的日期过滤器来输出您想要的任何内容。如果您不/不能这样做,则必须编写自定义过滤器标记来读取 isoformat 日期并按照您想要的方式输出。

使用dateutil 库的示例:

from django import template
import dateutil

register = template.Library()

@register.filter(name='to_date')
def to_date(value):
    return dateutil.parser.parse(value)
Run Code Online (Sandbox Code Playgroud)

自定义过滤器标签的文档。

  • 更新:从 Python 3.7 开始就有 `datetime.fromisoformat()` 方法 (2认同)