使用模板语言,例如Jinja或Chameleon。您可以返回字典并与模板上的字典进行交互。
Klein 的文档描述了如何使用 Twisted 模板。
模板
您还可以通过返回实现 twisted.web.template.IRenderable 的任何内容来轻松使用 twisted.web.templates,例如 twisted.web.template.Element 在这种情况下,模板将被渲染,结果将作为响应发送身体。
from twisted.web.template import Element, XMLString, renderer
from klein import run, route
class HelloElement(Element):
loader = XMLString((
'<h1 '
'xmlns:t="http://twistedmatrix.com/ns/twisted.web.template/0.1"'
'>Hello, <span t:render="name"></span>!</h1>'))
def __init__(self, name):
self._name = name
@renderer
def name(self, request, tag):
return self._name
@route('/hello/<string:name>')
def home(request, name='world'):
return HelloElement(name)
run("localhost", 8080)
和this,它准确地向您展示了您的要求。引用前几段:
HTML 模板是将模板文档(描述样式和结构,但本身不包含任何内容)转换为包含应用程序中对象信息的一些 HTML 输出的过程。在 Python 中有很多很多的库可以做到这一点:仅举几例,jinja2、django templates 和 clearsilver。您可以轻松地在您的 Twisted Web 应用程序中使用这些库中的任何一个,或者将它们作为 WSGI 应用程序运行,或者通过调用您首选的模板系统的 API 以将它们的输出生成为字符串,然后将这些字符串写入 Request.write 。
在我们开始解释如何使用它之前,我想强调一下,如果您喜欢其他方式来生成 HTML,则不需要使用 Twisted 的模板系统。如果它适合您的个人风格或应用程序,请使用它,但请随意使用其他东西。Twisted 包含自己使用的模板,因为 twisted.web 服务器需要在不同的地方生成 HTML,我们不想为此添加另一个大的依赖项。Twisted 与其他系统没有任何不兼容,因此这与我们使用自己的系统无关。