将bottlepy
与simple template engine
一起使用我想知道如何将传递的整个词典传递给模板上的子模板。
e.g。在我的main.py
我有:
@bottle.route('/')
@bottle.view('main')
def index():
"""main page"""
return {"name": "main", "foo": 12, "flag": True}
我想将所有字典中的值从main.tpl
传递到sub.tpl
$ cat sub.tpl
<h1>Hello, {{name}}</h1>
$ cat main.tpl
% include('subtemplate', name=name, foo=foo, flag=flag)
枚举每个键(如上例所示),当然不具有很高的可扩展性和灵活性。
所以:有没有办法传递整个环境?
类似
$ cat main.tpl
% include('subtemplate', *env)
答案 0 :(得分:2)
只是一个想法,脱离我的头顶。 (即未经测试。)
@bottle.route('/')
@bottle.view('main')
def index():
"""main page"""
env = {"name": "main", "foo": 12, "flag": True} # same vars as before
env["env"] = env # add a reference to the entire dict, for passing deeper into subtemplates
return env
然后:
% include('subtemplate', env=env)
修改强>
感谢@Kwartz建议以下改进。
一个更简洁的方法就是:
% include('subtemplate', **env)
没有尝试过,但是如果**locals()
有效(请联系@Lukas Graf进行尝试并确认),那么期望**env
也能正常工作是合理的。