对于twisted.web.template,相当于nevow.tags.raw

时间:2013-05-19 21:15:33

标签: twisted twisted.web

我正在尝试将pydoctor移植到twisted.web.template并遇到一个非常基本的问题:pydoctor使用epydoc将docstrings呈现为HTML但是我看不到将这种HTML包含在HTML中的方法生成的页面没有转义。我该怎么办?

1 个答案:

答案 0 :(得分:2)

有些故意无法在不解析的情况下将HTML插入页面; twisted.web.template对于产生比nevow更正确的输出更为敏捷。

有很多方法可以解决这个问题。

  1. 最终,您的HTML将转向某种输出流。您可以简单地插入一个返回一对Deferred个对象的渲染器,并在第一个触发但在第二个之前对底层流执行.write。有点粗,但它有效地表达了你的意图:)。
  2. 您只需使用XMLString或类似内容将epydoc的输出重新解析为HTML,以便twisted.web.template可以正确地将其写出来。这将“浪费”一点CPU,但在我看来,它是值得的(A)压力测试它将给予twt和(B)保证 - 假设t.w.t是正确的 - 它会让你发出有效的HTML。
  3. 然而,当我写这个答案时,我意识到使用twisted.web.template的当前公共API,任意HTML通常都不可能实现第2点。理想情况下,您可以使用html5lib来解析这些内容,然后将解析后的输入转储到文档树中。

    如果您不介意使用私有API,可以将html5lib's SAX support与我们用于加载模板的internal SAX parser联系起来。

    当然,真正的解决方案是fix the ticket you already filed,因此您不必在Twisted之外使用私有API ...