【问题标题】:equivalent of nevow.tags.raw for twisted.web.template相当于 nevow.tags.raw 用于 twisted.web.template
【发布时间】:2013-05-19 21:15:32
【问题描述】:

我正在尝试将 pydoctor 移植到 twisted.web.template 并遇到了一个非常基本的问题:pydoctor 使用 epydoc 将文档字符串呈现为 HTML,但我看不到在生成的页面中包含此 HTML 的方法没有逃脱。我能做什么?

【问题讨论】:

    标签: twisted twisted.web


    【解决方案1】:

    有一点是故意的,没有办法在没有解析的情况下将 HTML 插入页面; twisted.web.template 比 nevow 更注重产生正确的输出。

    有几种方法可以解决这个问题。

    1. 最终,您的 HTML 将进入某种输出流。您可以简单地插入一个返回一对Deferred 对象的渲染器,并在第一个触发之后但在第二个触发之前对基础流执行.write。有点恶心,但它有效地表达了你的意图:)。
    2. 您可以使用XMLString 或类似方法简单地将epydoc 的输出重新解析为HTML,以便twisted.web.template 可以正确地写出它。这将“浪费”一点 CPU,但在我看来,对于 (A) 压力测试,它将给 t.w.t 和 (B) 保证 - 假设 t.w.t 是正确的 - 它将是值得的告诉您您正在发出有效的 HTML。

    然而,当我在写这个答案时,我意识到第 2 点通常不适用于具有当前公共 API 的 twisted.web.template 的任意 HTML。理想情况下,您可以使用html5lib 解析这些内容,然后将解析后的输入转储到您的文档树中。

    如果您不介意使用私有 API,您可以将 html5lib's SAX support 连接到我们用来加载模板的 internal SAX parser

    当然,真正的解决方案是fix the ticket you already filed,这样就不必在Twisted 本身之外使用私有API...

    【讨论】:

    • 感谢您确认我的怀疑,即今天没有设施可以执行此操作。我会先尝试一下选项 2。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-11
    相关资源
    最近更新 更多