2009-11-11 3 views
0

저는 여러 파이썬 응용 프로그램에서 사용될 라이브러리를 구축 중입니다. RMDBS에서 다국어 전자 메일 템플릿을 얻은 다음 전자 메일을 보내기 전에 Python의 템플릿에서 변수 바꾸기가 수행됩니다.신뢰할 수없는 파이썬 템플릿 - 사용하기에 안전한 라이브러리는 무엇입니까?

변수 바꾸기 외에도 템플릿의 if, elif 및 for 문을 지원하는 템플릿 라이브러리가 필요합니다.

저는 Mako를 대부분의 프로젝트에 사용하고 필요없는 많은 기능을 제공하지 않기 때문에 Tempita를 보았습니다.

신뢰할 수없는 코드 실행 문제가 있습니다. 코드 실행을 지원하지 않는 Python 용 템플릿 솔루션에서 누군가 나를 지적하거나 비활성화 할 수 있습니까?

+0

아마도 if/elif/for 요구 사항을 제거하고 string.Template을 사용해야합니다. 그것은 빠르며 여분의 라이브러리를 필요로하지 않고 내 안전 요구 사항을 충족시킵니다. – Tony

+1

어쩌면 문자열 주위에 매우 얇은 래퍼를 작성할 수 있습니다. 조건부 문장을 허용하려면 템플릿을 사용 하시겠습니까? – Ravi

+0

내가 결정한 것은 Object를 MailTemplate Object에 바인딩하는 mapper() 함수를 만드는 것입니다. mapper가 호출되면 템플릿 편집 중에 변수 대체 단계에서 사용할 수있는 Object의 속성을 정의합니다. 이렇게하면 조건부 또는 루프 논리가 필요하면 객체에서 @property def를 사용한 다음 해당 속성에서 반환 된 문자열을 사용할 수 있고 템플릿에 밀어 넣을 수 있습니다. – Tony

답변

4

: 그 이유

, 그것은 장고 템플릿에서 직접 파이썬 코드를 호출하는 것은 불가능하다. 모든 "프로그래밍"은 근본적으로 템플릿 태그가 수행 할 수있는 범위로 제한됩니다. 임의의 일을하는 사용자 정의 템플릿 태그를 작성할 수는 있지만 즉시 사용할 수있는 Django 템플릿 태그는 의도적으로 임의의 Python 코드 실행을 허용하지 않습니다.

Django templates 시도하십시오. Django 앱 외부에서 설정하는 것은 약간 까다 롭습니다. DJANGO_SETTINGS_MODULE과 관련이 있으며 주위를 검색하지만 신뢰할 수 있습니다.

+0

고마워요, 그 코드 실행 해제에 대한 내 요구 사항을 충족하지 않습니다. 그러나, 나는이 lib를 간단하게 유지하려고 노력하고 있으며, 장고를 위해 고안된 라이브러리를 도입하는 것이 그것에 맞설 것이라는 두려움이있다. – Tony

3

Jinja2을 확인하셨습니까? 그것은 당신이 말한 것과 거의 같습니다. 그리고 물건을 단순하게 유지하면서 디자이너에게주지 않으면 서 강력한 힘을 합친 것입니다 too 많은 힘이 있습니다. :)

Django의 템플릿 시스템을 사용했다면 매우 유사합니다 (?를 기준으로하지 않는 경우). Jinja. Django book에서

+1

Jinja의 구문은 실제로 Django의 템플릿을 기반으로합니다. 다른 방법은 아닙니다. –

+0

잘 알고 있습니다. 감사합니다. – Bartek

관련 문제