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
Variablen aus Datei mit Werten aus Dictionary ersetzen?
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?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.
Falls Du kein Templatesystem benutzt, dann gibt's zwei einfach Möglichkeiten. Zeichenkettenformatierung mit ``%`` und Dictionary, oder `string.Template`:Wie kann ich Variablen, die in der Templatedatei (z.B. index.html) mit den Werten aus dem Dictionary ersetzen?
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.'
Ich versuche gerade eine zu schreiben.
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?
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!
*Ja mein Meißter... Ich werde keine Template Engine schreiben...**Jedi-Handbewegung*
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.Du willst keine eigene Template-Engine schreiben...
Sämtliche andere Sachen werden über den Code gemacht. Und nennt mir eine "Template Engine", die gerade mal 10kb groß ist Es ist einfach das, was ich benötige nicht mehr und nicht weniger.
MfG EnTeQuAk
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
stpy. Und jetzt? Krieg' ich 'nen Keks?EnTeQuAk hat geschrieben:Und nennt mir eine "Template Engine", die gerade mal 10kb groß ist
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
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"
Sooo!
Und ja... *keks raushol*
Da hast du einen!
*keks an Leonidas abgeb*
MfG EnTeQuAk
Aber es geht ja und funktiert!
Es ist halt keien Templateengine... sondern einfach nur.... ein "den Code in Form bringendes Script"
Sooo!
Und ja... *keks raushol*
Da hast du einen!
*keks an Leonidas abgeb*
MfG EnTeQuAk