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