2024-06-26 01:35:17 发布
网友
使用Jinja2,如何格式化日期字段?我知道在Python中,我可以简单地执行以下操作:
print(car.date_of_manufacture.strftime('%Y-%m-%d'))
但如何在Jinja2中设置日期格式?
这是我在Jinja2和Flask用过的过滤器
@app.template_filter('strftime') def _jinja2_filter_datetime(date, fmt=None): date = dateutil.parser.parse(date) native = date.replace(tzinfo=None) format='%b %d, %Y' return native.strftime(format)
然后像这样使用过滤器:
{{car.date_of_manufacture|strftime}}
有两种方法。直接的方法是简单地调用(并打印)模板中的strftime()方法,例如
{{ car.date_of_manufacture.strftime('%Y-%m-%d') }}
另一个更好的方法是定义自己的过滤器,例如:
from flask import Flask import babel app = Flask(__name__) 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) app.jinja_env.filters['datetime'] = format_datetime
(这个过滤器基于关于i18n的原因基于babel,但是您也可以使用strftime)。过滤器的优点是,您可以编写
{{ car.date_of_manufacture|datetime }} {{ car.date_of_manufacture|datetime('full') }}
它看起来更好,更易于维护。另一个常见的过滤器也是“timedelta”过滤器,其计算结果类似于“8分钟前编写的”。您可以为此使用babel.dates.format_timedelta,并将其注册为类似于此处给出的datetime示例的筛选器。
babel.dates.format_timedelta
我想你得自己写过滤器。它实际上是文档中自定义过滤器的示例:http://jinja.pocoo.org/docs/api/#custom-filters
这是我在Jinja2和Flask用过的过滤器
然后像这样使用过滤器:
有两种方法。直接的方法是简单地调用(并打印)模板中的strftime()方法,例如
另一个更好的方法是定义自己的过滤器,例如:
(这个过滤器基于关于i18n的原因基于babel,但是您也可以使用strftime)。过滤器的优点是,您可以编写
它看起来更好,更易于维护。另一个常见的过滤器也是“timedelta”过滤器,其计算结果类似于“8分钟前编写的”。您可以为此使用
babel.dates.format_timedelta
,并将其注册为类似于此处给出的datetime示例的筛选器。我想你得自己写过滤器。它实际上是文档中自定义过滤器的示例:http://jinja.pocoo.org/docs/api/#custom-filters
相关问题 更多 >
编程相关推荐