我使用Pyramid和Mako進行模板化。Mako模板中的Python函數(不在模塊級塊中)
可以在Mako塊<%
和%>
內定義(半匿名)函數。
我知道它可以用一個模塊級塊<%!
和%>
來完成,但這意味着我的功能不必在本地範圍內時,模板的任何訪問,這意味着我不得不變量的每一位經過的,我需要。
例子:
...template...
<%
variable_in_local_scope = 'blah blah blah'
def my_function():
header_name = variable_in_local_scope.upper()
return header_name
%>
${foo()}
,這將拋出一個NameError
說是沒有定義header_name
。解決這個問題的唯一辦法一直像
<%!
def my_function(input_variable):
return input_variable.upper()
%>
${my_function(variable_in_local_scope)}
這工作代碼,但是當有比對功能的幾個變量更多,它得到相當unweildy。我還必須在模塊級別塊中重新導入可用於我的模板的任何「幫助器」功能。
有沒有辦法解決這個問題,還是我在做一些完全愚蠢的事情?