北漂IT民工 的博客

将tornado的模板用jinja2代替

tornado的模板对路径的支持不好。

在Windows平台下面就没有办法用了。

所以需要第三方的模板来支持,同时由于Django是python目前最流行的框架。

考虑到方便移植,我选择了jinja2。

这个与django类似的模板系统。

它的好处是不用象django那样需要将django的整个栈都加进来。

下面是它的基本使用方法:



from jinja2 import Environment, FileSystemLoader

_TEMPLATEDIR = ‘res/html’

file = ‘index.html’


env = Environment(loader = FileSystemLoader(_TEMPLATEDIR))

template = env.get_template(file)

content = template.render(params)



然后将content输出既可。

但这个时候还不行。

如果你使用了GBK的页面模板。


注:本人特别喜欢用GBK编码。

即使在UTF-8统一了很多程序员的思维的时期,

因为我坚信大部分的程序用UTF-8并没有意义,

除非他要支持多种语言,

但对于大部分WEB网站来讲,

支持多语言基本上是神话。

即使当你需要国际化时,转化也是相当容易的事情。

所以为什么不从GBK开始?

一个更加轻量的编码。


言归正传,要支持GBK,你需要做一定的修改,代码如下:



from jinja2 import Environment, FileSystemLoader

_TEMPLATEDIR = ‘res/html’

file = ‘index.html’

encoding = ‘gbk’

params = {}


env = Environment(loader = FileSystemLoader(_TEMPLATEDIR, encoding=encoding))

template = env.get_template(file) #这个时候的编辑又变成了内码(unicode)

content = template.render(params).encode(encoding)



这样就可以实现编码的统一了。

当然其它保证HTTP各处的编码统一的事情我就不细说了。