Variablen aus Datei mit Werten aus Dictionary ersetzen?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
EnTeQuAk
User
Beiträge: 986
Registriert: Freitag 21. Juli 2006, 15:03
Wohnort: Berlin
Kontaktdaten:

Kurz und Knapp ;)

Ich habe ein Dictionary '' vars ''. Dot stehen Variablen und deren werte drinne.

Dieses Dictionary schicke ich an meine Templatedatei, die daraus die fertige Seite generieren soll. Klappt soweit alles ganz gut jedoch steht mir eine Frage offen.

Wie kann ich Variablen, die in der Templatedatei (z.B. index.html) mit den Werten aus dem Dictionary ersetzen?

Geht das mit einem '' replace ''? Wenn ja wie kann ich auf die Werte zugreifen. Das ganze sollte natürlich noch recht Dynamisch sein, da sich die Variablen ständig ändern.

MfG EnTeQuAk
BlackJack

EnTeQuAk hat geschrieben:Dieses Dictionary schicke ich an meine Templatedatei, die daraus die fertige Seite generieren soll. Klappt soweit alles ganz gut jedoch steht mir eine Frage offen.
Wie schickt man ein Dictionary an eine Templatedatei? Kann es sein dass Du uns eine wesentliche Information vorenthältst, zum Beispiel welches Templatesystem Du benutzt oder ob Du keins benutzt und wissen willst, wie man selbst ein einfaches schreibt?
Wie kann ich Variablen, die in der Templatedatei (z.B. index.html) mit den Werten aus dem Dictionary ersetzen?
Falls Du kein Templatesystem benutzt, dann gibt's zwei einfach Möglichkeiten. Zeichenkettenformatierung mit ``%`` und Dictionary, oder `string.Template`:

Code: Alles auswählen

In [10]: a = {'subjekt': 'Python', 'praedikat': 'toll'}

In [11]: '%(subjekt)s ist %(praedikat)s.' % a
Out[11]: 'Python ist toll.'

In [12]: b = string.Template('$subjekt ist $praedikat.')

In [13]: b.substitute(a)
Out[13]: 'Python ist toll.'
EnTeQuAk
User
Beiträge: 986
Registriert: Freitag 21. Juli 2006, 15:03
Wohnort: Berlin
Kontaktdaten:



Wie schickt man ein Dictionary an eine Templatedatei? Kann es sein dass Du uns eine wesentliche Information vorenthältst, zum Beispiel welches Templatesystem Du benutzt oder ob Du keins benutzt und wissen willst, wie man selbst ein einfaches schreibt?
Ich versuche gerade eine zu schreiben.

Also ich habe zwei Dateien.

Ausgangspunkt ist ein CherryPy3. in meiner index.py werden verschiedene Werte dynamisch erstellt. Welche sollte ja egal sein.

Soo. Dann wird die Datei '' template.py '' importiert. Diese soll dann die *.html aufrufen, jeh nach Seite die Aufgerufen wird.
Bps.
als URL wird '' http://localhost:8080/index '' aufgerufen.
Also wird von der template.py die Datei index.html aus dem Ordner /templates/ aufgerufen.

In dieser sind Variablen a la {TITLE} drinne. Wie die Variablen auszusehen habe ist erstmal schnuppe... das einfachste ist am besten ;)

So und diese Variablen werden dann mit dem jeweiligen Werten aus dem Dictionary ersetzt.

Das erstmal dazu, was ich machen möchte. Ich werde dann auch noch erstmal deine Beispiele ausprobieren.

MfG EnTeQuAk

EDIT:

einen Riesen Dank an dich BlackJack.!

Das mit deinen Beispielen hat super gepklappt! ;)
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

*Jedi-Handbewegung* Du willst keine eigene Template-Engine schreiben...
EnTeQuAk
User
Beiträge: 986
Registriert: Freitag 21. Juli 2006, 15:03
Wohnort: Berlin
Kontaktdaten:

*Jedi-Handbewegung*
*Ja mein Meißter... Ich werde keine Template Engine schreiben...*

:) :) :)
Du willst keine eigene Template-Engine schreiben...
Nee direkt nicht. Aber mir ist halt alles, was es gibt zu groß. Und ich brauche nur etwas, was Variablen aus *.html Dateien ausließt und sie durch Inhalt ersetzt.

Sämtliche andere Sachen werden über den Code gemacht. Und nennt mir eine "Template Engine", die gerade mal 10kb groß ist :D Es ist einfach das, was ich benötige nicht mehr und nicht weniger.

MfG EnTeQuAk
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

EnTeQuAk hat geschrieben:Und nennt mir eine "Template Engine", die gerade mal 10kb groß ist :D
stpy. Und jetzt? Krieg' ich 'nen Keks?

Ansonsten gibt es auch mehrere [wiki]Template Engines[/wiki] im Wiki (übrigens seh ich grad dass dort nix über Genshi oder Django steht).
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
EnTeQuAk
User
Beiträge: 986
Registriert: Freitag 21. Juli 2006, 15:03
Wohnort: Berlin
Kontaktdaten:

heuel :'( ich wollte doch einfach nur was eigenes schreiben ;)

Aber es geht ja und funktiert! ;)

Es ist halt keien Templateengine... sondern einfach nur.... ein "den Code in Form bringendes Script" :D


Sooo!

Und ja... *keks raushol*

Da hast du einen!

*keks an Leonidas abgeb*

MfG EnTeQuAk
Antworten