1

テンプレートの一部を Web アプリ内でユーザーが編集できるようにしたい (置換変数を介してコンテンツを置き換えるだけでなく、実際のテンプレート)。しかし、テンプレート ファイルのリストを取得する方法がわかりません。

明らかに、実際のパスを知っていれば、通常の 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 に答える