Bottle SimpleTemplate Engine

Django, Flask, Bottle, WSGI, CGI…
Antworten
Benutzeravatar
mathman
User
Beiträge: 92
Registriert: Mittwoch 19. November 2008, 08:27
Wohnort: Magdeburg
Kontaktdaten:

Guten Abend,

ich habe mir jetzt ein paar mal das Turorial und die Doku
für die SimpleTemplate Engine von Bottle durchgelesen und
verstehe die leider nicht ganz.

In meinem reinen HTML Code muss ich {{ Wert }} als Platzhalter einbauen,
soweit habe ich das verstanden und ab jetzt gehts in die Grauzone :roll:
Das Template muss einmal codiert werden und befindet sich dann in den /views Ordner oder kann ich eine im Editor geschriebene html Datei (mit Platzhalter) einfach in den Ordner kopieren und die Endung .tpl dran setzen ?
Benutzeravatar
noisefloor
User
Beiträge: 3853
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,
Das Template muss einmal codiert werden und befindet sich dann in den /views Ordner oder kann ich eine im Editor geschriebene html Datei (mit Platzhalter) einfach in den Ordner kopieren und die Endung .tpl dran setzen ?
So ähnlich. Codieren / kompilieren etc. musst du - wie auch sonst bei Python - selber nichts. Die .tpl-Dateien werden beim 1. Aufruf durch Bottle bzw. der Applikation, die auf Bottle setzt, geparst. Es wird aber keine neue Datei mit Byte-Code oder ähnlichem angelegt.

Grundsätzlich kannst du HTML-Dateien auch als Template nehmen. Ob das aber sinnvoll ist, ist eine anderen Sache, weil du dann ggf. nicht die Möglichkeiten eines Templates nutzt. Minimal solltest du IMHO den Kopf und Fuss von HTML-Seiten (z.B. Doctype-Definition, Style-Infos etc.) - also Sachen, die auf jeder deiner Seiten vorkommen, in eigenen Templates auslagern und per Include einbinden.

Gruß, noisefloor
Benutzeravatar
mathman
User
Beiträge: 92
Registriert: Mittwoch 19. November 2008, 08:27
Wohnort: Magdeburg
Kontaktdaten:

Danke für Antwort.

Ich verstehe dann irgendwie das Beispiel hier nicht

Code: Alles auswählen

@route('/hello')
@route('/hello/:name')
@view('hello_template')
def hello(name='World'):
    return dict(name=name)
Irgendwo muss doch das Template namens hello_template existieren.
Wenn das nicht im Byte Code existiert, wo würde das denn dann stehen ?

Oder aber erzeugt man im Vorfeld mittels

Code: Alles auswählen

>>> from bottle import template
>>> template('Hello {{name}}!', name='World')
u'Hello World!'
Das Template ? Müsste man doch dann aber irgendwie speichern ?!
BlackJack

@mathman: Welche Datei da geladen wird, wie die heissen muss, und wo sie gesucht wird, steht doch ziemlich deutlich im Tutorial. Da wo auch das Beispiel steht: http://bottle.paws.de/docs/dev/tutorial ... -templates
Benutzeravatar
mathman
User
Beiträge: 92
Registriert: Mittwoch 19. November 2008, 08:27
Wohnort: Magdeburg
Kontaktdaten:

BlackJack hat geschrieben:@mathman: Welche Datei da geladen wird, wie die heissen muss, und wo sie gesucht wird, steht doch ziemlich deutlich im Tutorial. Da wo auch das Beispiel steht: http://bottle.paws.de/docs/dev/tutorial ... -templates
Dort heißt es doch
This will load the template file hello_template.tpl and render it with the name variable set. Bottle will look for templates in the ./views/ folder or any folder specified in the bottle.TEMPLATE_PATH list.
Das heißt doch, dass Bootle in den views Ordner (den man im Vorfeld sicherlich erstellen muss) nach dem Template sucht und das Template muss da als File gespeichert sein ?!
Benutzeravatar
noisefloor
User
Beiträge: 3853
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,
Das heißt doch, dass Bottle in den views Ordner (den man im Vorfeld sicherlich erstellen muss) nach dem Template sucht und das Template muss da als File gespeichert sein ?!
So isses.

Wenn dir das Beispiel mit dem `@view(...)` und `return dict(...)` zu implizit ist, dann nutz' doch einfach die explizite Variante:

Code: Alles auswählen

from bottle import route, template, run

@route('/template_test')
def test(name='foo')
    return template('mein_template.tpl', name=name)
mit dem Template, dass im './views' Ordner liegt:

Code: Alles auswählen

<p>Hallo <strong>{{name}}</strong></p>
Gruß, noisefloor
Benutzeravatar
mathman
User
Beiträge: 92
Registriert: Mittwoch 19. November 2008, 08:27
Wohnort: Magdeburg
Kontaktdaten:

danke, genau das hab ich gemeint :)
wahrscheinlich hab ich mich nicht falsch ausgedrückt
Antworten