Я использую Pyramid и Mako для шаблонов.Функции Python в шаблонах Мако (не в модульных блоках)
Можно определить (полуанонимную) функцию в блоке Мако <%
и %>
.
Я знаю, что это может быть сделано с модульным блоком <%!
и %>
, но это означает, что моя функция не имеет доступа к локальной области при шаблонизации, то есть я должен передать каждый бит переменной в том, что я необходимость.
Пример:
...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. Я также должен повторно импортировать любые «вспомогательные» функции, доступные для моего шаблона в блоке уровня модуля.
Есть ли способ обойти это, или я делаю что-то совершенно глупое?