flask中使用Flask_Mement来本地化日期和时间,在test.py文件中需要这样引入Flask_Mement模块:
from flask_moment import Moment
Moment(app)
而在html中我们需要先引入moment.js和jquery.js两个js库,因为Flask_Mement需要依赖这两个库,我们在html文件中的head标签中进行引用:
<html>
<head>
{{moment.include_jquery()}}
{{moment.include_moment()}}
{{moment.lang("zh-CN")}}
</head>
<body>
{{moment().format('YYYY-MM-DD,h:mm:ss a')}}
</body>
</html>
{{moment.include_jquery()}}和 {{moment.include_moment()}}分别是对moment.js和jquery.js两个js库的引用, {{moment.lang("zh-CN")}}是设置本地的语言环境为中文. {{moment().format('YYYY-MM-DD,h:mm:ss a')}}是将moment进行格式化输出.
运行效果:
刚接触Flask_Mement时感觉很奇怪:html中的moment是怎么引入的?请注意这句:
Moment(app)
其实很多教程里面都写作:
moment=Moment(app)
一直以为html中的moment即为py文件中的moment,但是经过实验,我把py文件中的moment改名或者删除都不会影响结果的显示,也就是说两者不是同一个东西.所以在这里我特意没有声明moment,来强调这一点.
后面再次实验,我把
Moment(app)
进行注释后,发现结果无法显示.所以我猜测应该时通过这句代码,将Moment引入到了flask兑现实例的上下文中,并在上下文中声明了一个名叫moment的变量,所以模板才能够访问.
以后有机会研究flask的源码再研究这一点...
附:
常用格式化参数
YYYY | 2014 | 年份 |
YY | 14 | 2个字符表示的年份 |
Q | 1..4 | 季度 |
M MM | 4..04 | 月份 |
MMM MMMM | 4月..四月 | 根据moment.locale()中的设置显示月份 |
D DD | 1..31 | 一月中的第几天 |
Do | 1日..31日 | 一月中的第几天 |
DDD DDDD | 1..365 | 一年中的第几天 |
X | 1410715640.579 | 时间戳 |
x | 1410715640579 | 时间戳 |
Github位置:
https://github.com/HymanLiuTS/flaskTs
git clone git@github.com:HymanLiuTS/flaskTs.git
获取本文源代码:
git checkout FL14