如何在 Django 模板中解析“2015-01-01T00:00:00Z”?

MC *_*C X 3 python django django-templates django-haystack solr4

在我的 Django html 模板中,我使用 haystack 以“2015-01-01T00:00:00Z”格式获取我的 SOLR facet_date 结果。如何在模板中以“01/01/2015”格式解析它?我的模板是

{{ facets.dates.created.start }}
Run Code Online (Sandbox Code Playgroud)

我应该在模板中添加什么“|date:”选项?谢谢!

Pau*_*ine 5

如果您的日期是 ISO 字符串而不是 Python datetime.datetime,我猜您将不得不在视图中解析它或编写自定义过滤器:

# yourapp/templatetags/parse_iso.py
from django.template import Library
import datetime

register = Library()

@register.filter(expects_localtime=True)
def parse_iso(value):
    return datetime.datetime.strptime(value, "%Y-%m-%dT%H:%M:%SZ")
Run Code Online (Sandbox Code Playgroud)

然后在模板上:

{% load parse_iso %}

{{ value|parse_iso|date:'d/m/Y'}}
Run Code Online (Sandbox Code Playgroud)

[编辑]

得到这个错误 Exception Type: TemplateSyntaxError at /search/ Exception Value: 'parse_iso' is not a valid tag library: Template library parse_iso not found

确保您遵循文档中规定代码布局

yourapp/
    __init__.py
    models.py
    ...
    templatetags/
        __init__.py
        parse_iso.py
    views.py
Run Code Online (Sandbox Code Playgroud)

您所在的国家/地区可能会使用m/d/Y(01/01/2015模棱两可,我建议使用这样的示例,31/01/2015以便清楚第一个数字是代表日还是月)。