我将日期作为整数字段存储在我的数据库中,并将其称为时间戳。当我在模板中显示它时,我尝试使用{{ timestamp | date:"D d M Y" }}
,但是,这不会为我输出任何内容。
我做错了吗?
编辑: 抱歉打字错误,我确实在我的代码中输入了date:而不是date =。但是,由于时间戳是整数字段,我应该在执行此操作之前将其转换为日期时间吗?我可以在模板中做到吗?由于这行代码正在迭代模板中的对象数组。
答案 0 :(得分:2)
{{ timestamp|date:"D d M Y" }}
“=”!=“:”;)
如果您有权访问该视图,我建议将日期作为日期时间对象发送到模板,而不是整数。
来自文档:{{value | date:“D d M Y”}}如果value是日期时间对象 (例如,datetime.datetime.now())的结果,输出将是 字符串'Wed 09 Jan 2008'。
以下是日期功能文档的链接:Django|Built-in-template-tags-and-filters|Date
您是否也尝试仅打印整数以查看其中是否确实存在正确的值?
答案 1 :(得分:2)
您需要创建自定义模板标签过滤器。我为您制作了这个:只需确保 app目录中有templatetags
文件夹,然后在目录中创建一个空文件__init__.py
。同时将以下代码保存在templatetag目录中timestamp_to_time.py
。
还要确保包含此templatetag目录的应用程序位于INSTALLED_APPS
设置变量中。
from django import template
register = template.Library()
@register.filter('timestamp_to_time')
def convert_timestamp_to_time(timestamp):
import time
return datetime.date.fromtimestamp(int(timestamp))
在模板中,您可以按照以下步骤使用过滤器:
{{ value|timestamp_to_time|date:"jS N, Y" }}
{#replace value 的时间戳值,然后格式您想要的时间#}
请务必使用
在模板中加载模板标签过滤器{% load timestamp_to_time %}
尝试使用过滤器之前
答案 2 :(得分:1)
要使用Django的内置日期过滤器,您应该使用DateField
或DateTimeField
。
请注意,您可以轻松convert a timestamp to python datetime,这是DateField使用的格式。
另请查看correct syntax的文档:
{{ value|date:"D d M Y" }}