内联 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 字符被转义,而使用 % 则不然。谢谢!
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!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
看起来您的 HTML 正在被转义。如果将内联
if
更改为以下内容,会发生什么:(编辑:放置
| n
以在条件之后禁用过滤)。Looks like your HTML is being escaped. What happens if you change your inline
if
to this:(Edit: Put the
| n
to disable the filtering AFTER the conditional).