内联if语句转义HTML字符

2 投票
1 回答
1235 浏览
提问于 2025-04-17 03:14

我在玩Pyramid框架里的Mako模板,想要使用内联的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> 

我想让我的代码尽量简洁,所以更喜欢用内联的if语句,但我不明白为什么HTML字符会被转义,而用%符号时却不会。谢谢!

1 个回答

2

看起来你的HTML代码被转义了。试试把你原来的内联if改成这样:

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

(补充说明:把| n放在条件判断之后,这样可以关闭过滤功能)。

撰写回答