Вывод списка файлов шаблонов пирамид из вида
Я хочу, чтобы некоторые из моих шаблонов редактировались пользователем в моем веб-приложении (фактический шаблон, а не просто замена содержимого с помощью переменных замены). Но я не могу понять, как получить список файлов шаблонов.
Очевидно, что если я знаю реальный путь, я могу просто использовать обычные инструменты Python. Но есть ли способ получить фактическое местоположение файла с some.package:templates/template.pt
синтаксис?
Я хочу получить список файлов шаблонов, скажем, some.package:templates/email/
, Есть ли способ сделать это?
1 ответ
Чтобы перейти от точечной спецификации актива, вы можете использовать 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, чтобы пользователь обновлял шаблоны.