Implementierungsdetails zu einem in Python geschriebenen E -Mail -Templating -System verstecken

StackOverflow https://stackoverflow.com/questions/405509

Frage

Ich schreibe eine Anwendung, in der eine der Funktionen darin besteht, dass der Benutzer eine E -Mail -Vorlage über die Markdown -Syntax schreiben kann.

Neben der Formatierung muss der Benutzer in der Lage sein, Platzhalter für ein paar Variablen zu verwenden, die zur Laufzeit ersetzt werden.

Die Art und Weise, wie dies derzeit funktioniert, ist sehr einfach: Die Vorlagen haben die Platzhalter von Pythonic %(VAR) und ich ersetze diejenigen durch ein Wörterbuch, bevor ich Markdown2 -Formatierung anwende.

Es stellt sich heraus, dass der Endbenutzer dieses Systems ein technisch versierter Benutzer sein wird, und ich möchte es nicht für alle deutlich machen, dass er in Python geschrieben ist.

Es ist nicht so, dass ich Python nicht mag ... Ich denke tatsächlich, Python ist das perfekte Werkzeug für den Job. Ich möchte das einfach nicht dem Benutzer aussetzen (möchte dasselbe, selbst wenn es in Java geschrieben wäre, Perl, Perl, Perl , Rubin oder irgendetwas anderes).

Daher möchte ich um Einblicke in das, was Ihrer Meinung nach am besten Platzhalter für die Benutzer aufdecken würde:

  1. Was ist Ihrer Meinung nach das beste Platzhalterformat (denkt wie $ {var}, $ (var) oder #{var})?

  2. Was wäre der beste Weg, um diese Platzhalter zu ersetzen?

Ich bin der Verwendung eines regulären Ausdrucks, um sich zu ändern - zum Beispiel - $ {var} in %(var) s und dann die reguläre Python -Templating -Substitution anwenden, aber ich bin mir nicht sicher, ob dies der beste Ansatz ist.

Wenn Sie so gehen, wäre es sehr schön, wenn Sie mir angeben könnten, was auch ein Entwurf dieses regulären Ausdrucks ist.

Vielen Dank!

Aktualisieren: Ein Benutzer wies darauf hin, dass es sich nicht lohnt, wenn es sich nicht lohnt, da alles, was ich brauche, nur Schleifen oder ähnliches habe.

Endgültiges Update: Ich habe mich zu diesem Zeitpunkt entschieden, keine Vorlagenmotoren zu verwenden. Ich habe mich für den einfacheren Ansatz für String.template entschieden (wie in einem Kommentar von hervorgeht hyperboreaner). Die Wahrheit ist, dass ich keine Lösung auswählen möchte, weil es irgendwann in der Zukunft ein Bedürfnis gibt. Ich werde all diese Vorschläge auf meinem Ärmel behalten, und wenn die Lebensdauer der Anwendung eindeutig eine oder mehrere von ihnen angebotene Funktionen benötigt, werde ich die Idee erneut besuchen. Im Moment denke ich wirklich, dass es ein Overkill ist. In vollständigen Vorlagen mitgeblasen der Endbenutzer Kann so bearbeiten, wie er will, ist zumindest in meiner Sicht mehr Probleme als Nutzen. Trotzdem fühlt es sich viel schöner an die Gründe, warum ich diesen Weg nicht unterbewegt habe, als nichts zu recherchieren und ihn zu wählen.

Vielen Dank für die Eingabe.

War es hilfreich?

Lösung

Verwenden Sie ein echtes Template -Tool: Mako oder Jinja. Rollen Sie nicht Ihre eigenen. Ist es nicht wert.

Andere Tipps

Haben Sie ein leichtes Vorlagensystem ... Ich bin mir nicht sicher, ob Sie einige der Turbogears verwenden können (Kind oder Genshi)

ich würde empfehlen Jinja2.

Es sollte kein Problem mit der Laufzeitleistung erstellen, da es Vorlagen für Python zusammenstellt. Es würde eine viel größere Flexibilität bieten. Wie für Wartbarkeit; Es hängt viel von dem Coder ab, aber theoretisch (und zugegebenermaßen oberflächlich) kann ich nicht sehen, warum es schwieriger sein sollte, sie zu warten.

Mit etwas mehr Arbeit können Sie Ihrem technisch versierten Benutzer die Möglichkeit geben, den Substitutionsstil selbst zu definieren. Oder wählen Sie eine aus Standardeinstellungen, die Sie liefern.

Sie können die neue Str.Format () -Methode von Python 2.6/3.0 probieren: http://docs.python.org/library/string.html#formatstrings

Dies sieht ein bisschen anders aus als %-Formatierung und ist möglicherweise nicht so sofort erkennbar wie Python:

'fish{chips}'.format(chips= 'x')
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top