torin2k
Июнь 9, 2010 07:44:27
Кто-нибудь знает как отучить mako транслировать двойные кавычки в символ quot?
Пока нашел только один способ: напрямую писать в context.
Например:
${context.write(' “ ‘)} выплюнет двойные кавычки
${’ ” '} выплюнет символ quot
Андрей Светлов
Июнь 9, 2010 11:57:58
Отучить-то можно…
Но, кажется, вы что-то неправильно делаете. Зачем такое потребовалось?
torin2k
Июнь 9, 2010 12:49:25
что-бы сократить количество % if … % endif в темплейте написал в проекте функцию делающую case и выдающую куски html.
что-то такое:
<div ${c.case(row,(1,'id=“first”',2,'class=“second”'))}>
…
</div>
если row = 1, то <div id=“first”>
если row = 2, то <div class=“second”>
Андрей Светлов
Июнь 9, 2010 16:30:52
torin2k
Июнь 9, 2010 17:22:39
делал (так правильнее). почему-то вместо результата выдавало текст вставленного кода.
torin2k
Июнь 11, 2010 11:07:04
Андрей Светлов
Сделайте ваш case mako-функцией: http://www.makotemplates.org/docs/synta … x_tags_def
И будет вам счастье.
Тоже преобразует, например:
<%def name="d(x,l=)">
% for y in l:
% if x == y:
${y}
% endif
% endfor
</%def>
${d(10,)}
выдаст значение: class=quot;desyatquot;
Андрей Светлов
Июнь 11, 2010 11:26:32
<%def name="d(x,l={})">
% row = l.get(x)
% if row is None:
% return
% for name, val in row.iteritems():
${name}="${val}"
% endfor
</%def>
${d(10,{10, {'class': "desyat"}})}
torin2k
Июнь 11, 2010 12:26:55
Андрей Светлов
<%def name="d(x,l={})">
% row = l.get(x)
% if row is None:
% return
% for name, val in row.iteritems():
${name}="${val}"
% endfor
</%def>
${d(10,{10, {'class': "desyat"}})}
Строанно, когда я изначально пытался словарем передавать параметры, но mako ругался на синтакс-еррор.
torin2k
Июнь 14, 2010 18:24:38
Оказывается mako в фигурных скобках поддерживает конструкции Python типа: ${“Результат1” if “Выражение1” else “Результат2”}
Необходимость отдельной функции отпала.