从视图中列出金字塔模板文件

时间:2014-03-24 16:49:10

标签: python templates pyramid chameleon

我想让我的一些模板用户可以在我的网络应用程序中进行编辑(实际模板,而不仅仅是通过替换变量替换内容)。但我无法弄清楚如何获取模板文件列表。

显然,如果我知道真正的路径,我可以只使用常规的python工具。但有没有办法用some.package:templates/template.pt语法获取实际文件位置?

我想获取模板文件列表,让我们说some.package:templates/email/。有没有办法做到这一点?

1 个答案:

答案 0 :(得分:0)

要使用点线资产规范,您可以使用pyramid.path.AssetResolver作为documentation州,它看起来像这样:

from pyramid.path import AssetResolver

a = AssetResolver()
resolver = a.resolve('myproject:templates/foo.pt')
print(resolver.abspath())
# -> /path/to/myproject/templates/foo.pt

具体来说,它有关于解决路径的说法:

  

如果spec是绝对文件名(例如/path/to/myproject/templates/foo.pt)或绝对资产规范(例如myproject:templates/foo.pt),则返回资产描述符而不考虑传递给此类构造函数的包。 / p>


但是我强烈建议不要让用户直接修改包内的模板文件。我建议的是,您在安装过程中有一种方法可以将所有模板从包中复制出来,然后使用Pyramids asset override机制将现有资产规范用新位置分出来。此时,您可以使用标准的Python打开/关闭文件方法让用户更新模板。