Я создаю библиотеку, которая будет использоваться в нескольких приложениях Python. Он получает многоязычные шаблоны электронной почты из RMDBS, а затем замена переменной будет выполняться в шаблоне на Python до отправки электронной почты.Неверные шаблоны в Python - что такое безопасная библиотека для использования?
В дополнение к замене переменных мне нужна библиотека шаблонов для поддержки if, elif и для операторов в шаблонах.
Я использую Mako для большинства своих проектов, а также посмотрел на Tempita, поскольку он не предоставляет много функций, которые мне не нужны.
У меня есть проблема с ненадежным исполнением кода. Может ли кто-нибудь указать мне на решение шаблона для Python, которое либо не поддерживает выполнение кода, либо разрешит мне его отключить?
Возможно, я должен покончить с требованиями if/elif/for и просто использовать string.Template. Это было бы быстро, не требовать дополнительных библиотек и соответствовать моим требованиям безопасности. – Tony
Возможно, вы могли бы написать очень тонкую обертку вокруг string.Template, чтобы разрешить условные утверждения? – Ravi
Что я решил сделать, так это создать функцию mapper() для привязки объекта к объекту MailTemplate. Когда вызывается mapper, я определяю, какие свойства объекта могут использоваться на этапе замены переменных во время компиляции шаблона. Таким образом, если мне нужна условная или циклическая логика, я просто использую @property def в моем объекте, а затем могу использовать строку, возвращаемую из этого свойства def, и вставить его в шаблон. – Tony