Вывод списка файлов шаблонов пирамид из вида

Я хочу, чтобы некоторые из моих шаблонов редактировались пользователем в моем веб-приложении (фактический шаблон, а не просто замена содержимого с помощью переменных замены). Но я не могу понять, как получить список файлов шаблонов.

Очевидно, что если я знаю реальный путь, я могу просто использовать обычные инструменты 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, чтобы пользователь обновлял шаблоны.

Другие вопросы по тегам