使用JJIA2,如何格式化日期字段?我知道在Python中我可以简单地做到这一点:
print(car.date_of_manufacture.strftime('%Y-%m-%d'))
但是我该如何在Jinja2中设置日期格式呢?
使用JJIA2,如何格式化日期字段?我知道在Python中我可以简单地做到这一点:
print(car.date_of_manufacture.strftime('%Y-%m-%d'))
但是我该如何在Jinja2中设置日期格式呢?
有两种方法可以做到这一点.直接的方法是简单地调用(并打印)模板中的strftime()方法,例如
{{ car.date_of_manufacture.strftime('%Y-%m-%d') }}
另一个明显更好的方法是定义自己的过滤器,例如:
from flask import Flask
import babel
app = Flask(__name__)
@app.template_filter()
def format_datetime(value, format='medium'):
if format == 'full':
format="EEEE, d. MMMM y 'at' HH:mm"
elif format == 'medium':
format="EE dd.MM.y HH:mm"
return babel.dates.format_datetime(value, format)
(由于i18n的原因,此过滤器基于巴贝尔,但您也可以使用strftime).过滤器的优点是,你可以写
{{ car.date_of_manufacture|format_datetime }}
{{ car.date_of_manufacture|format_datetime('full') }}
它看起来更好,更易于维护.另一个常见的过滤器也是"timedelta"过滤器,其计算结果类似于"8分钟前编写".您可以使用babel.dates.format_timedelta
,并将其注册为过滤器,类似于此处给出的datetime示例.