css in bottle template

Django, Flask, Bottle, WSGI, CGI…
Benutzeravatar
/me
User
Beiträge: 3554
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

lackschuh hat geschrieben:Das mit dem Root-Pfad kapiere ich auch noch nicht so ganz.

Ich hab lokal in einem Ordner c:\Homepage bottle.py, home.py und layout.tpl liegen. Des Weiteren habe ich, wie oben beschrieben, folgende Unterordner gemacht: /var/www und im Ordner www sind die Ordner css, js, img.
/var/www ist ein Ordner unter Linux (bzw. Unix).

Die Frage ist, wo du den Ordner wirklich erstellt hast. Der Slash am Anfang des Pfades bedeutet, dass du auf der obersten Ebene der Ordnerhierarchie beginnst. Bei Windows bezieht sich das meines Wissens dann auf das aktuell gewählte Laufwerk. Ist dein Pfad also wirklich /var/www oder ist es C:\Homepage\var\www?
lackschuh
User
Beiträge: 281
Registriert: Dienstag 8. Mai 2012, 13:40

/me hat geschrieben: /var/www ist ein Ordner unter Linux (bzw. Unix).

Die Frage ist, wo du den Ordner wirklich erstellt hast. Der Slash am Anfang des Pfades bedeutet, dass du auf der obersten Ebene der Ordnerhierarchie beginnst. Bei Windows bezieht sich das meines Wissens dann auf das aktuell gewählte Laufwerk. Ist dein Pfad also wirklich /var/www oder ist es C:\Homepage\var\www?
Ach so.., der Pfad ist neu C:\Projekt\Homepage\www
Darin (im Ordner www) sind die Ordner css, js, img, thumbs usw. Im Hauptordner ist das bottle.py und home.py und die Templates.

mfg
Benutzeravatar
/me
User
Beiträge: 3554
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

lackschuh hat geschrieben:Ach so.., der Pfad ist neu C:\Projekt\Homepage\www
Dann müsste in deinem bisherigen Code die Definition des Pfades auch entsprechend aussehen:

Code: Alles auswählen

static_folder = 'C:\\Projekt\\Homepage\\www'
Der doppelte Backslash ist erforderlich, da der Backslash als Escape-Zeichen dient und bei Folgen wie "\t" nicht die beiden Zeichen "\" und "t", sondern ein Tabulatorzeichen im String erzeugt. Zwei Backslashes führen dazu, dass im String hinterher genau einer vorhanden ist.
lackschuh
User
Beiträge: 281
Registriert: Dienstag 8. Mai 2012, 13:40

Hi

Super, funktioniert.
friedduck
User
Beiträge: 76
Registriert: Montag 23. Juli 2012, 20:41

Sorry das ich den Beitrag wieder rauskrame, hatte grad das gleiche Problem. Meine Lösung sieht so aus:

Code: Alles auswählen

@route('/css/:filename')
def server_static(filename):
    return static_file(filename, root=os.path.join(os.path.abspath('.'),'css'))
Das dazugehörige CSS:

Code: Alles auswählen

<link rel="stylesheet" type="text/css" href="/css/main.css" />
Und hier noch was zur besseren Verständniss:

Code: Alles auswählen

tpl = os.path.join(os.path.abspath('.'),'tpl')
css = os.path.join(os.path.abspath('.'),'css')
print(tpl,css)
Die Augabe von print:

Code: Alles auswählen

C:\projekte\bottle\src\tpl C:\projekte\bottle\src\css
Nicht vergessen:

Code: Alles auswählen

import sys, os
Vll. kanns ja jmd. gebrauchen.

MfG Friedduck
Zuletzt geändert von friedduck am Donnerstag 4. Oktober 2012, 20:26, insgesamt 2-mal geändert.
BlackJack

@friedduck: Es ist ein bisschen sinnfrei `os.path.join()` zu verwenden wenn man dann doch in einem der Teile einen expliziten Systemabhängigen Pfadtrenner stehen hat. Lass den einfach weg, der ist überflüssig.
friedduck
User
Beiträge: 76
Registriert: Montag 23. Juli 2012, 20:41

Du hast recht, das Beispiel würde nicht unter Linux laufen, habs jetzt korrigiert.
Antworten