문제

사용자가 Markdown 구문을 사용하여 이메일 템플릿을 작성할 수있는 기능 중 하나 인 응용 프로그램을 작성하고 있습니다.

서식 외에도 사용자는 런타임에 교체 될 몇 가지 변수에 자리 표시자를 사용할 수 있어야합니다.

이것이 현재 작동하는 방식은 매우 간단합니다. 템플릿에는 Pythonic %(VAR)의 자리 표시자가 있으며 MarkDown2 형식을 적용하기 전에 사전으로 교체합니다.

이 시스템의 최종 사용자는 기술에 정통한 사용자가 될 것이며 Python으로 작성된 모든 사람에게 분명하게 만들고 싶지 않습니다.

파이썬이 마음에 들지 않는 것이 아닙니다 ... 실제로 파이썬이 작업을위한 완벽한 도구라고 생각합니다. 나는 단지 그것을 사용자에게 노출시키고 싶지 않습니다 (Java, Perl로 작성된 경우에도 마찬가지입니다. , 루비 또는 다른 것).

따라서 귀하의 의견으로는 사용자를위한 자리 표시자를 폭로하는 가장 좋은 방법에 대한 통찰력을 요청하고 싶습니다.

  1. 최고의 자리 표시 자 형식 ($ {var}, $ (var) 또는 #{var}와 같은 생각)는 무엇이라고 생각하십니까?

  2. 자리 표시자를 교체하는 가장 좋은 방법은 무엇입니까?

그러나 정규 표현식을 사용하여 변경 (예 : $ {var})으로 %(var) s로 변경 한 다음 일반 파이썬 템플릿 대체를 적용하지만 그것이 최선의 접근법인지 확실하지 않습니다.

당신이 그런 식으로 가면, 당신이 그 정규 표현의 초안이 무엇인지 알 수 있다면 그것은 매우 좋을 것입니다.

감사!

업데이트: 사용자는 본격적인 템플릿 시스템을 사용하는 것을 지적했지만 그만한 가치가 없다고 생각합니다. 필요한 것은 자리 표시 자 대체입니다. 루프 나 그와 비슷한 것이 없기 때문입니다.

최종 업데이트: 현재 템플릿 엔진을 사용하지 않기로 선택했습니다. 나는 더 간단한 string.template 접근법으로 가기로 선택했습니다 (주석에 지적한대로 hyperboreean). 진실은 언젠가 미래에 필요할 수 있기 때문에 솔루션을 선택하는 것을 좋아하지 않는다는 것입니다. 나는 모든 제안을 내 소매에 보관할 것이며, 응용 프로그램의 수명에 그들에게 제공되는 하나 이상의 기능이 분명히 필요하다면 아이디어를 다시 방문하겠습니다. 지금은 정말 과잉이라고 생각합니다. 템플릿이 완전히 날아갑니다 최종 사용자 그가 원하는대로 편집 할 수있는 것은 적어도 내 관점에서 혜택보다 더 많은 문제입니다. 그럼에도 불구하고, 내가 그 길을 잃지 않은 이유를 인식하는 것은 훨씬 더 좋은 느낌이 들었습니다.

모든 입력에 감사드립니다.

도움이 되었습니까?

해결책

실제 템플릿 도구 사용 : 마코 또는 진 자. 자신을 굴리지 마십시오. 그럴 가치가 없어.

다른 팁

가벼운 템플릿 시스템이있어 ... Turbogears가 제공하는 일부를 사용할 수 있는지 확실하지 않습니다 (Kid 또는 Genshi)

추천합니다 Jinja2.

템플릿을 파이썬으로 컴파일하므로 런타임 성능 문제를 만들어서는 안됩니다. 훨씬 더 큰 유연성을 제공 할 것입니다. 에 관해서 유지 가능성; 그것은 코더에 크게 의존하지만 이론적으로 (그리고 인정하게 피상적으로) 왜 유지하기가 더 어려워야하는지 알 수 없습니다.

조금 더 작업하면 기술에 정통한 사용자에게 대체 스타일을 직접 정의 할 수있는 능력을 제공 할 수 있습니다. 또는 공급 기본값 중 하나를 선택하십시오.

Python 2.6/3.0의 New Str.Format () 메소드를 시도해 볼 수 있습니다. http://docs.python.org/library/string.html#formatstrings

이것은 %형성과 약간 다르게 보이며 Python만큼 즉시 인식 할 수 없을 수 있습니다.

'fish{chips}'.format(chips= 'x')
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top