如何转义液体模板标签?

Posted

技术标签:

【中文标题】如何转义液体模板标签?【英文标题】:How to escape liquid template tags? 【发布时间】:2011-03-26 11:12:16 【问题描述】:

这听起来很简单,但是我在文档中的任何地方都找不到。如何在 liquid 模板中写入 % this % 而不被引擎处理?

【问题讨论】:

你可以随时comment out. 【参考方案1】:

可以使用raw 标签禁用液体处理引擎:

% raw  %
% this %
% endraw %

会显示

% this %

【讨论】:

我相信这曾经是plug-in。是否同时进入核心引擎? 看起来raw标签是一年前在核心引擎中添加的。见github.com/Shopify/liquid/commits/master/lib/liquid/tags/raw.rb 但是,Github 不支持这种转义。 @LeiMing 好像是现在(可能是May 2013之后) 已确认,它适用于 GitHub Pages。 raw 标签是 introduced in Liquid 2.3.0,GitHub Pages 当前使用的是 version 2.5.5。【参考方案2】:

对于未来的搜索者,一种无需插件即可逃脱的方法,请使用以下代码:

 "% this " %

对于标签,要转义 this 使用:

 " this " 

还有一个 jekyll 插件可以让它变得更容易:https://gist.github.com/1020852

jekyll 的原始标签。防止液体在 % raw % 之间解析文本 和 % endraw %

Reference

【讨论】:

太好了,感谢您的参考。由于某种原因,我无法在液体文档中找到它。 你不再需要一个插件来使用% raw %,对我来说它开箱即用,现在它在the docs中 在 jekyll 中是否可以使用 ``` 而不是 % 来转义代码? 前几个建议对我不起作用,但使用 raw 确实:% raw % this % endraw % 它成功了,谢谢...在这里看一个真实的例子g14n.info/2014/08/moving-from-blogger-to-github-pages/#comments【参考方案3】:

你可以在 Jekyll 帖子中使用 % raw % % endraw % 转义液体标签,即

% raw %
  % for post in site.posts %
      post.content 
  % endfor %

% endraw %

会产生

  % for post in site.posts %
      post.content 
  % endfor %

【讨论】:

【参考方案4】:

顺便说一句:

如果你想在 Jekyll 中显示 "% this " %,你可以这样编码:

 " " " "% this"  "  "%

转义 " this " 使用:

 " " " " this"  "  "

【讨论】:

哈哈哈哈哈哈哈。【参考方案5】:

还有另一种选择:使用 html 特殊字符代码将花括号替换为其匹配代码:

将每个 替换为 将每个 替换为

有关此解决方案的更多详细信息,请参阅: http://www.tikalk.com/devops/curly_brances_workaround/

【讨论】:

【参考方案6】:

我找到了一种用花括号显示任何文本的万能方法。您可以将纯文本分配给变量并显示它。

% assign var = " sth " %
 var 

【讨论】:

谢谢!用于转义双引号或单引号【参考方案7】:

正如提到的here 一样,普通的% raw %% endraw % 只是第二好的解决方案,因为如果您在普通的github.com 上查找Markdown,就会显示这些解决方案。

最好的办法是把% raw %% endraw %放在HTML cmets中:

<!-- % raw % -->
something with curlky brackets like  this  and  that 
<!-- % endraw % -->

由于 HTML cmets,Github 将其视为评论。在 Github 页面中,原始标签将阻止解析标签之间的大括号。

【讨论】:

我喜欢这种方法,因为某种原因,它不会与我的摘录混淆。【参考方案8】:

我尝试了% raw % % endraw %

"% this " %。但它们都不起作用。

最后,我的工作答案是 "%" xxx something .

我的代码:

 "%"  extends 'xadmin/base_site.html' %
 "%"  block nav_form %
    <h3> ""  title </h3>
     "%"  for i in context1 %
        <p> ""  i </p>
     "%"  endfor %
 "%"  endblock %

结果:

% extends 'xadmin/base_site.html' %
% block nav_form %
    <h3> title </h3>
    % for i in context1 %
        <p> i </p>
    % endfor %
% endblock %

【讨论】:

以上是关于如何转义液体模板标签?的主要内容,如果未能解决你的问题,请参考以下文章

ES9(2018)String 扩展 标签模板里字符串转义

关闭Django模板的自动转义

Django(十五)模板详解:模板标签过滤器模板注释模板继承html转义

Freemarker 转义 freemarker

13.Django中几大常用模板标签讲解及实战使用 for循环;if判断;页面跳转;开启关闭自动转义;url携带参数传递;注释

13.Django中几大常用模板标签讲解及实战使用 for循环;if判断;页面跳转;开启关闭自动转义;url携带参数传递;注释