比如要使用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的模板文件,最后返回渲染