这是 我介绍自己的在使用 Python使用 Flask 这个轻量级web框架 的 经验 这个系列 中的第十三篇文章
因为这系列的教程主要是深入的介绍关于微博应用程序的深入开发,所以比较缺少创新性,在此我就称它为“微博”吧!
下面这些部分我在之前已经发表了。大家有空可以去看看
关于github的简短说明
有些人可能没有注意到,最近我将这个微博客应用托管到了github上去了。
你可以在以下地址找到此仓库:
https://github.com/miguelgrinberg/microblog
为了方便大家,我为教程的每一步都打上了标签。(译者注:指每一个标签指向教程的不同git历史版本记录)
我们的微博应用的一个忽略了很久的问题就是日间和日期的显示。
直到现在,我们在我们的User和Post对象中使用Python它自己的方式来渲染时间对象,但这并不是一个好的解决方案。
考虑下这样的例子。我正在写这篇文章,此时正是12月31号下午3:54。我的时区是PST(或者你们更习惯的:UTC-8)。 在Python解释器中运行,我得到下面输出:
>>> from datetime import datetime >>> now = datetime.now() >>> print now 2012-12-31 15:54:42.915204 >>> now = datetime.utcnow() >>> print now 2012-12-31 23:55:13.635874
在我所在的地方,now()方法返回了正确的时间,但是now()调用返回的时间是UTC单位。
这是一个正常的解决方法,但是这对于用户来说有点累赘,用户需要输入一条他们已经在操作系统中配置过的信息。所以如果我们能抓取到用户电脑里设置的时区那解决问题会变得更有效率。
出于安全因素,浏览器不允许我们进入用户操作系统获取信息。即使它允许,我们也得知道在Windows,Linux,Mac,iOS,Android中从哪儿能获得到时区,这还不包括其他非主流操作系统。
在浏览器中得到用户的时区,然后通过标准的Javascript API获取到。在Web 2.0世界中用户允许Javascript执行(很少有网站不使用Javascript),所以通过Javascript获取用户时区是可行的。
我们用Javascript有两种方式配置可用的时区:
Moment.js 是一个小、免费、开源的Javascript库,它将日期和事件提升到另一个等级。它提供了能想象到的所有的时间日期格式,下面就是一些。
要在我们的应用中使用moment.js就需要在我们的模板文件中写那么一丢丢的Javascript代码。我们先来通过ISO 8601 时间来创建一个moment对象。例如:通过上面Python例子的UTC时间来创建一个moment对象,就像这样:
moment("2012-12-31T23:55:13 Z")
一旦对象被创建,它就可以被转化成各种各样格式类型的string。例如,将一个灰常冗长的时间显示转换为本地系统的时间:
moment("2012-12-31T23:55:13 Z").format('LLLL');
下面就是转换以后的时间显示:
Tuesday, January 1 2013 7:55 AM
评论删除后,数据将无法恢复
评论(2)