代码之家  ›  专栏  ›  技术社区  ›  Steven

Twisted Web服务器中用于模板呈现的自定义文件扩展名处理程序

  •  0
  • Steven  · 技术社区  · 7 年前

    我有一个twisted web服务器,在htdocs/中提供静态文件。。。等级制度我想通过所有考试。将模板文件返回到mako/jinja,但直接返回非模板静态文件。有没有人对最好的方法有什么见解?我想避免把它们放在 特定目录 相反,我希望将它们保留在自然文件层次结构中。

    2 回复  |  直到 7 年前
        1
  •  1
  •   Jean-Paul Calderone    7 年前

    您可以编写一个“处理器”,然后指导Twisted Web使用它。例如,如果您使用 twistd web 要运行web服务器,请执行以下操作:

    twistd web --processor template=yourlib.JinjaProcessor
    

    如果您不使用 扭曲的web ,您可以通过填充 processors a的属性 twisted.web.static.File 表示的父目录 .template 文件。

    处理器只是一个可调用的 FilePath 并返回 IResource 提供商。

        2
  •  0
  •   Steven    7 年前

    我试图使用一个文件处理器,但最终我将static子类化了。并重写render()方法。唯一复杂的是,我没有意识到我的类型(MakoFile)将为每个孩子实例化——这有时会导致我丢失本地mako上下文。最后,我意识到File类的每个实例都有一个Registry()。

    所以我将Registry子类化为MakoRegistry,将模板查找和上下文插入其中,并将其推送到顶级对象中。到目前为止,这是可行的。