使用资源模板进行轻量级模板化¶
概述¶
虽然 Twisted 可以使用高级模板系统(例如,DivmodNevow),但有时需要一个更轻量的系统,允许直接编写 HTML。虽然 ResourceScript
可用,但它编码开销高,并且需要一些无聊的字符串运算。 ResourceTemplate
使用 Quixote 的 PTL(Python 模板语言)填补了 Nevow 和 ResourceScript 之间的空白。
ResourceTemplates 需要安装 Quixote。在 Debian 中,这意味着安装 python-quixote
包 (apt-get install python-quixote
)。其他操作系统需要其他方法来安装 Quixote,或者可以手动安装。
配置 Twisted Web¶
让 Twisted Web 支持 ResourceTemplates 的最简单方法是使用 web tap 的 --processor
标志将它们绑定到某个扩展。以下是一个示例
% twistd web --path=/var/www \
--processor=.rtl=twisted.web.script.ResourceTemplate
上面的命令行将 rtl
扩展绑定到使用 ResourceTemplate 处理器。其他方法也是可能的,但需要更多 Python 代码,并且超出了本 HOWTO 的范围。
使用 ResourceTemplate¶
ResourceTemplates 使用称为“Python 模板语言”的 Python 扩展进行编码。PTL 的完整文档可在 quixote 网站 上找到。Web 服务器将期望 PTL 源文件定义一个名为 resource
的变量。这应该是一个 twisted.web.resource.Resource
,其 .render
方法将被调用。通常,您希望使用关键字 template
而不是 def
来定义 render
。
以下是一个资源模板的简单示例。
from twisted.web.resource import Resource
def getQuote():
return "An apple a day keeps the doctor away."
class QuoteResource(Resource):
template render(self, request):
"""\
<html>
<head><title>Quotes Galore</title></head>
<body><h1>Quotes</h1>"""
getQuote()
"</body></html>"
resource = QuoteResource()