Как получить возвращаемое значение из% def?Что я могу сделать, чтобы получить возвращаемое значение из% def?
makoT1.py:
import mako
from mako.template import Template
from mako.lookup import TemplateLookup
print "Hi world.",
mytemplate = Template(filename='makoT1.mako')
print mytemplate.render(),
makoT1.mako
<%
index = 0
%>
<%def name="a_def(counter)"> Pre: ${counter} <% counter += 1 %> Post: ${counter} <% return counter %> </%def>
index: ${index}
${a_def(index)}
index: ${index}
Dalem @ КНИ: ~ $ питон makoT1.py
Hi world.
index: 0
Pre: 0 Post: 1 1
index: 0
Обратите внимание, что второй "индекс" выше все еще 0? Вот что я пытаюсь исправить. Я бы хотел, чтобы он увеличивался.
Возможно, что-то подобное для makoT1.mako:
<%
index = 0
%>
<%def name="a_def(counter)">
Pre: ${counter}
<% counter += 1 %>
Post: ${counter}
<% return counter %>
</%def>
index: ${index}
<% index = ${a_def(index)} %>
index: ${index}
Но что получает мне эту ошибку:
[email protected]:~$ python makoT1.py
Hi world.
Traceback (most recent call last):
File "makoT1.py", line 5, in <module>
mytemplate = Template(filename='makoT1.mako')
File "/usr/local/lib/python2.7/dist-packages/mako/template.py", line 291, in __init__
module = self._compile_from_file(path, filename)
File "/usr/local/lib/python2.7/dist-packages/mako/template.py", line 368, in _compile_from_file
filename)
File "/usr/local/lib/python2.7/dist-packages/mako/template.py", line 615, in _compile_text
generate_magic_comment=template.disable_unicode)
File "/usr/local/lib/python2.7/dist-packages/mako/template.py", line 597, in _compile
node = lexer.parse()
File "/usr/local/lib/python2.7/dist-packages/mako/lexer.py", line 241, in parse
if self.match_python_block():
File "/usr/local/lib/python2.7/dist-packages/mako/lexer.py", line 376, in match_python_block
match.group(1)=='!', lineno=line, pos=pos)
File "/usr/local/lib/python2.7/dist-packages/mako/lexer.py", line 131, in append_node
node = nodecls(*args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/mako/parsetree.py", line 139, in __init__
self.code = ast.PythonCode(text, **self.exception_kwargs)
File "/usr/local/lib/python2.7/dist-packages/mako/ast.py", line 37, in __init__
expr = pyparser.parse(code.lstrip(), "exec", **exception_kwargs)
File "/usr/local/lib/python2.7/dist-packages/mako/pyparser.py", line 60, in parse
), **exception_kwargs)
mako.exceptions.SyntaxException: (SyntaxError) invalid syntax (<unknown>, line 1) (u'index = ${a_def(index)} \n') in file 'makoT1.mako' at line: 11 char: 1
Это кажется странным, что линия 11 получит SyntaxError, когда это работает отлично для линии 11:
<% index = 0 %>
в случае, если не $ {a_def (индекс)} возвращает целое число от a_def (счетчик)?