1

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

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

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

4

1 回答 1

0

pyramid.path.AssetResolver文档所述,要从您可以使用的虚线资产规范开始,它看起来像这样:

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),则返回资产描述符,而不考虑传递给此类的构造函数的包。


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

于 2014-11-11T21:28:30.500 回答