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 的安装:
如下代码展示了如何在基模板的 scripts 块中引入这个库:
format(‘LLL’):根据客户端电脑中的时区和区域设置渲染日期和时间,参数决定了渲染的方式,’L’ 到 ‘LLLL’ 分别对应不同的复杂度。
对用户而言,会对 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/相关文章推荐
- [Lintcode 3sum]三数之和(python,二分)
- Python--基础学习--初识
- Python查看远程主机端口是否开放以及BashShell实现
- 素数生成器
- python—threading.thread【threading模块介绍01】
- Python 语法详解
- 使用Python的Flask框架构建大型Web应用程序的结构示例
- Python学习笔记 —— 逻辑语句
- 在Python的Flask框架中构建Web表单的教程
- python 压缩 解压缩 文件
- Python3学习:urllib的使用方法
- python 转义字符
- python综合练习1-- 用户登录
- python综合练习1-- 用户登录
- Python3.5 在Ubuntu16.04上无法画图的解决方案
- 66. Plus One [easy] (Python)
- Windows平台下Eclipse+Pydev搭建Python环境
- 107. Binary Tree Level Order Traversal II [easy] (Python)
- Python中规范定义命名空间的一些建议
- 全面理解Python中self的用法