向Jinja添加`parse_date`和`format_date`过滤器。
项目描述
Jinja2-ISO8601
向Jinja添加parse_date
和format_date
过滤器。由于iso8601
模块处理日期解析,因此该项目命名为Jinja2-ISO8601。.strftime()
方法处理日期格式化。
安装
首先安装Python模块
pip install jinja2-iso8601
然后将扩展添加到您的Jinja环境中
from jinja2 import Environment
jinja_env = Environment(extensions=['jinja2_iso8601.ISO8601Extension'])
使用
现在您可以在编写Jinja模板时使用两个新的过滤器:parse_date
和format_date
。parse_date
将ISO-8601格式的字符串转换为Python datetime
对象。format_date
将对传入的任何内容调用.strftime()
方法;这适用于datetime
、date
和time
对象。您需要为format_date
过滤器提供格式字符串;请查阅Python文档了解如何编写格式字符串。
例如,假设您有一个名为datestr
的变量,它表示一个有效的ISO-8601格式的日期时间字符串,例如"2022-09-19T14:38:34.213001"
。您可以将Jinja模板编写如下
no filter: {{ datestr }}
parsed: {{ datestr|parse_date }}
formatted: {{ datestr|parse_date|format_date("%a, %b %d %Y") }}
渲染后的结果将是
no filter: 2022-09-19T14:38:34.213001
parsed: 2022-09-19 14:38:34.213001
formatted: Mon, Sep 19 2022
时区
在Python中,日期和时间对象可能包含时区信息。具有相关时区的日期和时间对象是“有意识的”,而没有相关时区的日期和时间对象是“无意识的”。
默认情况下,解析没有时区信息的ISO-8601字符串时,结果是“无意识”的日期时间对象。但是,在某些情况下,您可能希望假设默认时区,以便即使没有指定时区,也始终得到“有意识”的日期时间对象。例如,如果您知道ISO-8601字符串位于UTC时区,则您可能希望parse_date
过滤器返回具有UTC时区的“有意识”日期时间。
在 Jinja 环境中,default_timezone
的值控制在没有指定字符串的情况下使用哪个时区。默认情况下,此值为 None
,这使得 parse_date
返回一个“无知的” datetime。以下是使所有 datetime 解析为 UTC 的方法
from datetime import timezone
from jinja2 import Environment
jinja_env = Environment(extensions=['jinja2_iso8601.ISO8601Extension'])
jinja_env.default_timezone = timezone.utc
相关链接
这些过滤器可以与处理 datetime 的其他 Jinja 过滤器配对,例如 jinja2_humanize_extension
。您可以使用此项目的 parse_date
过滤器将字符串解析为 datetime,然后使用 jinja2_humanize_extension
的 humanize_naturalday
过滤器对 datetime 进行“人性化”。它们协同工作得非常好!
jinja2_iso8601-1.0.0.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 4e1913997cae4576425b5d0399743008b85ae10fc4d9a1a8833648fba9f56fbc |
|
MD5 | 64b95decb10bd6ca109f1fbcb1819e77 |
|
BLAKE2b-256 | aa8d50c26253e2cf3c8fd26ecf78efa3773aa160c453a1ea320cfedb935ad77a |
jinja2_iso8601-1.0.0-py2.py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 0073a7b5ef39c9d9e355527c0ce44c1bb5e81f16fa5ccecd703ea1a024d6b1a6 |
|
MD5 | a5e8b7f04e7258c663bdb7fe96ac9ac3 |
|
BLAKE2b-256 | c8645be21f41fa1e1606792002d3361f4484ac23aeedc20d1507d471f11270c8 |