Reputation: 20315
So I'm playing with Mako on Pyramid and I'm trying to do inline if statements.
<li>${'<a href="#">Opinions</a></li>' if whichnav == 'opinions' else 'Opinions'}
Outputs:
<li><a href="#">Opinions</a></li>
Whereas:
% if whichnav =='opinions':
<li><a href="#">Opinions</a></li>
% else:
<li>Opinions</li>
% endif
Outputs correctly without escaping the HTML characters:
<li><a href="#">Opinions</a></li>
I want to make my code as clean as possible so inline if statements are preferable, but I don't understand why HTML characters are escaped whereas using % they are not. Thanks!
Upvotes: 2
Views: 1242
Reputation: 33716
Looks like your HTML is being escaped. What happens if you change your inline if
to this:
${'<a href="#">Opinions</a></li>' if whichnav == 'opinions' else 'Opinions' | n}
(Edit: Put the | n
to disable the filtering AFTER the conditional).
Upvotes: 2