2015-10-17 55 views
1

此问题与this one类似,但截然不同,在我看来。Django templatetags ISO至今

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

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

日期不能转换这些值吗?我清楚地记得在某个时候做这个,但不知道具体情况。

有没有一种方法可以正确调试它?现在,我只是没有看到任何输出,也没有出现在日志中。

+0

确保'my_object'在模板上下文中可用。 '{{my_object}}'的结果是什么? – danielcorreia

+0

打印整个字典。更重要的是,正如我上面提到的,'{{my_object.date}}'打印'2015-10-07T14:57:00.501597 + 00:00',确认密钥是正确的。 – Joost

+0

看起来这是一个字符串。日期过滤器对日期时间对象起作用。 –

回答

2

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

实施例使用dateutil library

from django import template 
import dateutil 

register = template.Library() 

@register.filter(name='to_date') 
def to_date(value): 
    return dateutil.parser.parse(value) 

文档为custom filter tags

+0

嗯..看起来你是对的,这是正确的方法。我很惊讶'datetime.isoformat'在标准库中,但是没有办法转换回'datetime'。 – Joost

+0

是的,也许有一天dateutil可以移动到标准库中,这很酷。请接受答案。 – danielcorreia