当 html 作为变量返回时,如何处理 html 中的 TAL 表达式?

How to process TAL expressions in html when the html is returned as a variable?

如何让在 context/get_html 中声明的 tal 表达式也被 tal 解释器处理?是否有实用程序可以环绕我在浏览器视图中声明的 get_html 函数?我是 运行 克隆 5.

示例:

context/get_html 将 return:

<div tal:content="context/Title"></div>

如果来自 context/get_html 的 html return 中包含如上所示的 tal 表达式,则在调用以下内容时不会处理它们:

<div id="content" tal:content="structure context/get_html"></div>

此输出结果:

<div id="content"><div tal:content="context/Title"></div></div>

当期望的输出是:

<div id="content"><div>My Title</div></div>

感谢您的帮助或花时间阅读本文。

你想使用金属宏来实现这一点!

例如 get_html 是一个包含以下内容的页面模板:

<metal:friendlyname define-macro="my-macro">
  <div id="content"><div tal:content="context/Title"></div></div>
</metal:friendlyname>

和use_macro是另一个包含以下内容的模板:

<metal:anothername use-macro="context/get_html/macros/my-macro" />

你访问 /your/context/use_macro 渲染输出正好是:

<div id="content"><div>Your Title ;)</div></div>

查看此内容以供参考:

Tal 不是那样工作的。一切都需要在模板中才能进行处理。

如果您正在使用变色龙(如果您使用的是 Plone 5,则可以,如果您使用的是 Plone 4 并带有一些插件,则可以),您可以在视图代码中执行此操作:

from chameleon import PageTemplate
template = PageTemplate("<div tal:content="context/Title"></div>")
template(context=context)