您的位置:首页 > 编程语言 > Python开发

Python Flask Web 第七课 —— 使用 flask-moment 本地化日期和时间

2016-06-04 16:05 711 查看
服务器需要统一时间单位,这与用户所在的地理位置(时区)无关,所以一般使用协调世界时(UTC,Coordinated Universal Time)

对用户而言,会对 UTC 格式的时间感到困惑,更希望看到本地时间,而且采用当地所惯用的格式。

要想在服务器上只使用 UTC 时间,一个优雅的解决方案是,把时间单位发送给 web 浏览器,转换称当地时间,然后渲染。web 浏览器可以很好地完成这一任务,因为它能获取用户电脑中的时区和区域设置。

moment.js 一个使用 JavaScript 开发的优秀客户端开源代码库,可在浏览器中渲染日期和时间。flask-moment 是一个 flask 程序扩展,能把 moment.js 集成到 Jinja2 模板中。首先,进行 flask-moment 的安装:

pip install flask-moment


1. flask-moment 的初始化方法为:

from flask_moment import Moment
moment = Moment(app)


2. 基模板的修改

除了 moment.js,flask-moment 还依赖 jquery.js 。要在 html 文档的某个地方引入这两个库,可以直接引入,这样可以选择使用哪个版本,也可使用扩展提供的辅助函数,从内容分发网络(CDN,Content Delivery Network)中引入通过测试的版本。Bootstrap 已经引入了 jquery.js,因此只需引入 moment.js 即可,

如下代码展示了如何在基模板的 scripts 块中引入这个库:

{% block script %}
{{ super() }}
{{ moment.include_moment() }}
{% endblock %}


3. 时间戳的处理

为了处理时间戳,flask-moment 向模板开放了 moment 类,

from datetime import datetime

@app.route('/')
def index():
return render_template('index.html', current_time=datetime.utcnow())


4. 在模板中渲染 current_time

<p>The local date and time is {{ moment(current_time).format('LLL') }}</p>
<p>That was {{ moment(current_time).fromNow(refresh=True) }}</p>


format(‘LLL’):根据客户端电脑中的时区和区域设置渲染日期和时间,参数决定了渲染的方式,’L’ 到 ‘LLLL’ 分别对应不同的复杂度。

5. 其他

flask-moment 实现了 moment.js 中的 format()、fromNow()、fromTime()、calendar()、valueOf()、unix()方法。具体可查阅文档 http://momentjs.com/docs/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: