Встроенный оператор if экранирует символы HTML - PullRequest
2 голосов
/ 28 сентября 2011

Так что я играю с Мако на Пирамиде и пытаюсь делать встроенные операторы if.

<li>${'<a href="#">Opinions</a></li>' if whichnav == 'opinions' else 'Opinions'}

Выходы:

<li>&lt;a href=&#34;#&#34;&gt;Opinions&lt;/a&gt;&lt;/li&gt;

Принимая во внимание:

% if whichnav =='opinions':
      <li><a href="#">Opinions</a></li>
% else:
      <li>Opinions</li>
% endif

Вывод правильно, без экранирования символов HTML:

<li><a href="#">Opinions</a></li> 

Я хочу сделать свой код максимально чистым, чтобы он был встроенным, если операторы предпочтительнее, но я не понимаю, почему экранируются символы HTML, тогда какиспользуя% они не.Спасибо!

1 Ответ

2 голосов
/ 28 сентября 2011

Похоже, ваш HTML экранирован.Что произойдет, если вы измените свой встроенный if на этот:

${'<a href="#">Opinions</a></li>' if whichnav == 'opinions' else 'Opinions' | n}

(Изменить: введите | n, чтобы отключить фильтрацию ПОСЛЕ условного).

...