我有一个扭曲的Web服务器,其中包含在htdocs / ...层次结构中提供的静态文件。我想在返回之前将所有.template文件传递给mako / jinja,但是直接返回非模板化的静态文件。有没有人对最佳方法有任何见解?我想避免将它们放在特定目录中,而是希望将它们留在自然文件层次结构中。
答案 0 :(得分:1)
您可以编写“处理器”,然后指示Twisted Web使用它。例如,如果您使用twistd web
来运行您的网络服务器:
twistd web --processor template=yourlib.JinjaProcessor
如果您未使用twistd web
,则可以通过填充代表processors
文件的父目录的twisted.web.static.File
的{{1}}属性来使用此功能。
处理器只是一个可调用的,需要.template
并返回FilePath
个提供程序。
答案 1 :(得分:0)
我试图使用文件处理器,但最后我最终继承了static.File并重写了render()方法。唯一的复杂因素是我没有意识到我的类型(MakoFile)将被实例化为每个孩子 - 这导致我有时失去我当地的mako语境。最后我意识到File类的每个实例都有一个Registry()传世。
所以我将Registry子类化为MakoRegistry,将模板查找和上下文粘贴在那里并将其推入顶级对象。到目前为止这是有效的。