Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 9, 2010 07:44:27

torin2k
От:
Зарегистрирован: 2010-05-31
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

mako

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

Например:
${context.write(' “ ‘)} выплюнет двойные кавычки
${’ ” '} выплюнет символ quot



Офлайн

#2 Июнь 9, 2010 11:57:58

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

mako

Отучить-то можно…
Но, кажется, вы что-то неправильно делаете. Зачем такое потребовалось?



Офлайн

#3 Июнь 9, 2010 12:49:25

torin2k
От:
Зарегистрирован: 2010-05-31
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

mako

что-бы сократить количество % 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”>



Офлайн

#4 Июнь 9, 2010 16:30:52

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

mako

Сделайте ваш case mako-функцией: http://www.makotemplates.org/docs/syntax.html#syntax_tags_def
И будет вам счастье.



Офлайн

#5 Июнь 9, 2010 17:22:39

torin2k
От:
Зарегистрирован: 2010-05-31
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

mako

делал (так правильнее). почему-то вместо результата выдавало текст вставленного кода.



Офлайн

#6 Июнь 11, 2010 11:07:04

torin2k
От:
Зарегистрирован: 2010-05-31
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

mako

Андрей Светлов
Сделайте ваш 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;



Офлайн

#7 Июнь 11, 2010 11:26:32

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

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"}})}



Офлайн

#8 Июнь 11, 2010 12:26:55

torin2k
От:
Зарегистрирован: 2010-05-31
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

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 ругался на синтакс-еррор.



Офлайн

#9 Июнь 14, 2010 18:24:38

torin2k
От:
Зарегистрирован: 2010-05-31
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

mako

Оказывается mako в фигурных скобках поддерживает конструкции Python типа: ${“Результат1” if “Выражение1” else “Результат2”}

Необходимость отдельной функции отпала.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version