【问题标题】:Listing pyramid template files from a view从视图中列出金字塔模板文件
【发布时间】:2014-11-12 05:28:30
【问题描述】:

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

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

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

【问题讨论】:

    标签: python templates pyramid chameleon


    【解决方案1】:

    要从虚线资产规范出发,您可以使用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),则返回资产描述符而不考虑传递给此类构造函数的包。


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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-18
      • 2019-07-19
      • 1970-01-01
      • 2011-12-07
      • 2017-07-03
      • 2013-04-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多