|
官方cookbook有介紹在web.py中使用jinja2模板的方法, class render_jinja:
"""Rendering interface to Jinja2 Templates
Example:
render= render_jinja('templates')
render.hello(name='jinja2')
"""
def __init__(self, *a, **kwargs):
extensions = kwargs.pop('extensions', [])
globals = kwargs.pop('globals', {})
from jinja2 import Environment,FileSystemLoader
self._lookup = Environment(loader=FileSystemLoader(*a, **kwargs), extensions=extensions)
self._lookup.globals.update(globals)
def __getattr__(self, name):
# Assuming all templates end with .html
#這里造成了只能使用同級目錄的文件,而且時(shí)能是html后綴的文件
path = name + '.html'
t = self._lookup.get_template(path)
return t.render
web.py只是提供了jinja2模板使用的簡單封裝,至于實(shí)際使用中還是要自己封裝 #!/usr/bin/env python
# -*- coding: utf-8 -*-
import web
from jinja2 import Environment, FileSystemLoader
urls = (
'/index', 'index',
'/admin', 'admin',
)
app = web.application(urls, globals())
#初始化jinja2的運(yùn)行環(huán)境,使用FileSystemLoader
env = Environment(loader = FileSystemLoader('templates'))
class index(object):
def GET(self):
#取得同級目錄下的文件
return env.get_template('index.html').render()
class admin(object):
def GET(self):
#取得下層目錄的文件
return env.get_template('admin/admin.html').render()
if __name__ == '__main__':
app.run()
更詳細(xì)的使用方法可以去jinja2的官網(wǎng)查http://jinja./docs/ |
|
|