python - 如何将 html 字符串转储到 python 扭曲模板中

标签 python twisted twisted.web

我正在使用twisted.web.template 制作一个网站,其中多个页面具有具有相同html 代码的子窗口。所以我想使用模板,并将完整的 html 字符串转储到占位符中,只要有相同的代码即可。但扭曲的模板系统引用了这些字符串(部分似乎是出于安全原因),因此浏览器无法将其解释为 html。有什么办法可以解决这个问题吗?这似乎是一个非常正常的使用场景,根据我的经验,这是 php 与 apache 的基本用法之一......

一些示例代码。我的模板如下所示

<html xmlns:t="http://twistedmatrix.com/ns/twisted.web.template/0.1">
    <body>
        <div t:render="content" />
    </body>
</html>

以及我在 python 中的渲染类

class ExampleElement(Element):
    loader = XMLFile(FilePath('template.xml'))

    @renderer
    def content(self, request, tag):
        return tag('<b>This content should be in bold, but is quoted</b>')

我知道我可以写的最后一行(通过适当的导入)

return tag(tags.b('Bold content'))

但是我实际上想要放入的html字符串要大得多,而且必须这样写而不是单个原始html字符串很不方便

最佳答案

使用加载器:

class ExampleElement(Element):
    loader = XMLFile(FilePath('template.xml'))

    extraContent = XMLFile(FilePath('extra-content.xml'))

    @renderer
    def content(self, request, tag):
        return self.extraContent.load()

或者,如果您确实需要将额外的内容放在源文件的字符串中而不是模板文件中:

class ExampleElement(Element):
    loader = XMLFile(FilePath('template.xml'))

    extraContent = XMLString("<b>This content will be in bold</b>")

    @renderer
    def content(self, request, tag):
        return self.extraContent.load()

关于python - 如何将 html 字符串转储到 python 扭曲模板中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21263453/

相关文章:

用于实时网站的 python 框架

ssl - 扭曲的 listenSSL 虚拟主机

python - Twisted python Factory 和 Protocol 接口(interface)如何工作?

python - 如何使矩形的副本在屏幕上保持绘制状态并且在pygame中不透水

python - 转换为 Twisted 异步设计

python - 如何授予模块对非 Python 文件的访问权限

python - Twisted串口dataReceived()提供碎片数据

python - 循环http客户端python,扭曲

python - 将具有相似(但略有不同)子字符串的字符串重新映射到相同的结果

python - 使用 django FORM 上传文件的唯一文件名