Найти - Пользователи
Полная версия: mako
Начало » Pyramid / Pylons / TurboGears » mako
1
torin2k
Кто-нибудь знает как отучить mako транслировать двойные кавычки в символ quot?
Пока нашел только один способ: напрямую писать в context.

Например:
${context.write(' “ ‘)} выплюнет двойные кавычки
${’ ” '} выплюнет символ quot
Андрей Светлов
Отучить-то можно…
Но, кажется, вы что-то неправильно делаете. Зачем такое потребовалось?
torin2k
что-бы сократить количество % 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”>
Андрей Светлов
Сделайте ваш case mako-функцией: http://www.makotemplates.org/docs/syntax.html#syntax_tags_def
И будет вам счастье.
torin2k
делал (так правильнее). почему-то вместо результата выдавало текст вставленного кода.
torin2k
Андрей Светлов
Сделайте ваш 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;
Андрей Светлов
<%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
Андрей Светлов
<%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
Оказывается mako в фигурных скобках поддерживает конструкции Python типа: ${“Результат1” if “Выражение1” else “Результат2”}

Необходимость отдельной функции отпала.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB