如何在Django模板之外获取格式化的DateTimeField值?

时间:2014-02-09 14:41:56

标签: python django

我在model.py

中声明了一个DateTimeField
date = models.DateTimeField(db_index=True, auto_now_add=True)

我在模板中显示了这样的值:

{{comment.date}}

这就是它的显示方式:

Feb. 9, 2014, 2:18 p.m.

显然django模板引擎格式化了DateTimeField 自动赋值,因为服务器返回那些类型 像这样的价值观:

2014-02-09 14:18:54.721021+00:00

但是我应该如何返回预先格式化的值 服务器?

我正在对服务器进行AJAX调用,并且它自然是日期 没有格式返回。因为我在外面有我的javascript文件 模板,我不能只做{{comment.date}}

2 个答案:

答案 0 :(得分:1)

可能会有一些不同的答案,每个答案都有其优点和缺点。

我来自API世界,我可以拥有API函数的多个消费者。

在你的情况下,你有一个返回结构数据(json)的后端服务,在这种情况下,goo会传递数据,这将独立于消费者。

JSON没有日期的任何标准格式,但有ISO-8601,它是人类可读和结构化的,并且可以在javascript方面轻松解析,例如agular.js正在解析它而没有任何额外的努力,moment.js(这很棒)甚至纯日期都完全能够读取它。

所以,imho - 选择iso-8601。

如何将日期序列化添加到json.dump有多个答案。

答案 1 :(得分:-1)

我知道这是一个老问题,但我遇到了它并且看起来没有回答所以我正在为其他用户回答我认为Martijn想要的东西。

有关datetime strftime的信息,请参阅Python文档here。 日期时间对象的格式可以类似于下面的示例,格式为2014-02-09 14:18:54.721021 + 00:00到2014年2月9日,下午2:18。

formatted_datetime_as_string = comment.date.strftime('%b. %d, %Y, %H:%M %p')

然后在JSON数据中使用formatted_datetime_as_string