|
web.py没有自己的模板引擎,需要引入别人的,他有一个类 web.contrib.template 里面做了些对接第三方模板的支持
比如要使用jinja模板
templates_path=os.path.join(app_root,'templates').replace("\\","/")
#配置模板引擎
render = render_jinja(
templates_path, # 设置模板路径.
encoding = 'utf-8', # 编码.
)
class home:
def GET(self):
return render.home({})
源代码:
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
path = name + '.html'
t = self._lookup.get_template(path)
return t.render
先初始化jinja,然后在 render.home的时候调用 __getattr__(self, name) 方法,在里面根据home名字去查找名字为home的模板文件,最后返回渲染 |
|
|