Фильтр даты Django не показывает форматированную временную метку в отображаемом шаблоне

#django-templates

#django-шаблоны

Вопрос:

Я пытаюсь отформатировать временную метку в дату, используя {{ timestamp|date:"d M Y" }} функцию Django.

Я столкнулся с проблемой, когда я могу выводить и просматривать необработанную временную метку {{ timestamp }} , но форматирование с помощью фильтра ничего не выводит, когда моя страница отображается с использованием {{ timestamp|date:"d M Y" }} .

Например, прямо сейчас результат {{ timestamp }} - {{ timestamp|date:"d M Y" }} — это 1317945600 - когда я загружаю страницу.

Любые предложения о том, что я могу делать неправильно?

Ответ №1:

Проблема в том, что date не требует метки времени, ей нужен объект datetime или date. вы должны проанализировать временную метку в python или создать templatetag.

добавьте это в templatetags/mytags.py

 from datetime import datetime
from django import template
register = template.Library()

@register.filter("timestamp")
def timestamp(value):
    try:
        return datetime.fromtimestamp(value)
    except AttributeError:
        return ''
  

Затем используйте его с

 {{ some_timestamp_value|timestamp|date:"format..." }}