内联if语句转义HTML字符
我在玩Pyramid框架里的Mako模板,想要使用内联的if语句。
<li>${'<a href="#">Opinions</a></li>' if whichnav == 'opinions' else 'Opinions'}
输出结果:
<li><a href="#">Opinions</a></li>
而且:
% if whichnav =='opinions':
<li><a href="#">Opinions</a></li>
% else:
<li>Opinions</li>
% endif
输出结果正确,没有转义HTML字符:
<li><a href="#">Opinions</a></li>
我想让我的代码尽量简洁,所以更喜欢用内联的if语句,但我不明白为什么HTML字符会被转义,而用%符号时却不会。谢谢!
1 个回答
2
看起来你的HTML代码被转义了。试试把你原来的内联if
改成这样:
${'<a href="#">Opinions</a></li>' if whichnav == 'opinions' else 'Opinions' | n}
(补充说明:把| n
放在条件判断之后,这样可以关闭过滤功能)。