我有一个像这样的方法:
def index(self):
title = "test"
return render("index.html", title=title)
其中render
是一个函数,它自动呈现给定的模板文件,其余的变量作为上下文传入。在这种情况下,我将title
作为变量传递给上下文。这对我来说有点多余。有没有什么方法可以自动获取index
方法中定义的所有变量,并将它们作为上下文的一部分传递给Mako?
答案 0 :(得分:2)
使用下面给出的技术:
def render(template, **vars):
# In practice this would render a template
print(vars)
def index():
title = 'A title'
subject = 'A subject'
render("index.html", **locals())
if __name__ == '__main__':
index()
运行上述脚本时,会打印
{'subject': 'A subject', 'title': 'A title'}
显示vars
字典可以用作模板上下文,就像你这样调用一样:
render("index.html", title='A title', subject='A subject')
如果您使用locals()
,它会传递index()
函数正文中定义的局部变量以及传递给index()
的所有参数 - 例如self
一种方法。
答案 1 :(得分:0)
请看这个片段:
def foo():
class bar:
a = 'b'
c = 'd'
e = 'f'
foo = ['bar', 'baz']
return vars(locals()['bar'])
for var, val in foo().items():
print var + '=' + str(val)
当你运行它时,它会吐出来:
a=b
__module__=__main__
e=f
c=d
foo=['bar', 'baz']
__doc__=None
locals()['bar']
块引用类bar
本身,vars()
返回bar
个变量。我不认为你可以通过实时功能来实现它,但是通过一个类似乎可以工作。