Seite 2 von 2
Re: css in bottle template
Verfasst: Donnerstag 9. Juni 2011, 18:51
von ceddy
ich hab das jetzt geändert:
Code: Alles auswählen
@route('/images/:filename')
def server_static(filename):
return static_file(filename, root='/home/cedric/bottle/file-server/images')
es geht abber trotzdem nicht, also die Seite wird zwar nach der css-Datei dargestellt, nur das halt die in der css datei verlinkten bilder nicht zu sehen sind
Re: css in bottle template
Verfasst: Donnerstag 9. Juni 2011, 20:03
von noisefloor
Hallo,
dann würde ich mal drauf tippen, dass du in der CSS-Datei immer noch die alten (=falschen) HTML-like Pfade drin hast und nicht korrekt auf die statische Route von Bottle verlinkst.
Gruß, noisefloor
Re: css in bottle template
Verfasst: Donnerstag 9. Juni 2011, 20:11
von ceddy
Eigentlich hab ich auf die routes verlinkt:
url(/images/login.png)
Re: css in bottle template
Verfasst: Donnerstag 9. Juni 2011, 20:36
von noisefloor
Hallo,
also bei mir funktioniert das 1A.
Wenn die CSS-Datei so aussieht:
Code: Alles auswählen
body {background: url(/test/static/bild.png); }
.kursiv {font-style: italic; color: red; }
und "bild.png" liegt im rootpath bekommt man das Bild als Hintergrundbild.
Sprich: Du musst irgendwie noch irgendwo einen Fehler haben...
Gruß, noisefloor
Re: css in bottle template
Verfasst: Freitag 10. Juni 2011, 05:41
von ceddy
SO jetzt geht das, was genau da falsch war weis ich jetzt auch nicht, abber das soll mir egal sein :K
denke nochmal

Re: css in bottle template
Verfasst: Freitag 10. Juni 2011, 11:21
von Hyperion
Damit man eine App leichter universell deployen kann, bietet Flask z.B. eine
`url_for()`-Funktion, die man auch in Templates verwenden kann. K.A. ob es das auch bei Bottle gibt.
Re: css in bottle template
Verfasst: Freitag 10. Juni 2011, 18:55
von noisefloor
Hallo,
nee, dass geht IMHO nur, wenn du Bottle 0.9 in Kombination mit dem Werkzeug Plugin nutzt
Wobei: Was ist denn daran un-universell? Das einzige, was du ändern müsstest wäre doch "rootpath" - und das ist unabhängig vom Routing.
Gruß, noisefloor
Re: css in bottle template
Verfasst: Dienstag 14. Juni 2011, 20:00
von script_composer
Im Normalfall sieht das z.B. so aus:
python Projekt ist irgendwo und deine static files z.B. in /var/www oder wo auch immer nur nicht im root-Ordner deiner Applikation
Code: Alles auswählen
static_folder = '/var/www'
@route('static/:file')
def static_files(file):
return static_file(path, root=static_folder)
Wenn du auch die Unterordner einbeziehen möchtest machst du folgendes:
Code: Alles auswählen
static_folder = '/var/www'
@route('/static/:path#.+#')
def static_files(path):
return static_file(path, root=static_folder)
ups ist ja schon längst erledigt der thread..... sorry
Re: css in bottle template
Verfasst: Dienstag 8. Mai 2012, 14:05
von lackschuh
Hallo
ich bin neu hier und experimentiere nun auch mit bottle. 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.
Bis jetzt hab ich die css erfolgreich wie folgt eingebunden:
Code: Alles auswählen
#--->START CSS IMPORT<----
from bottle import static_file
@route('/styles/:filename')
def server_static(filename):
return static_file(filename, root='./css/')
#---->ENDE CSS IMPORT<----
Meine Frage ist nun, kann ich mittels:
Code: Alles auswählen
static_folder = '/var/www'
@route('/static/:path#.+#')
def static_files(path):
return static_file(path, root=static_folder)
direkt auf alle Pfade bzw Ordner im www verweisen oder muss ich für jeden Ordner ein neues
einfügen?
Im Template siehts nun wie folgt aus:
Code: Alles auswählen
<link rel="stylesheet" href="/css/layout.css" type="text/css" />
<script href="/js/jquery-1.7.1.min.js" type="text/javascript"></script>
Re: css in bottle template
Verfasst: Mittwoch 9. Mai 2012, 10:53
von noisefloor
Hallo,
du kannst auch Pfade in einer Route dynamisch gestalten. Wie das geht, steht
in der Doku.
Gruß, noisefloor
Re: css in bottle template
Verfasst: Mittwoch 9. Mai 2012, 11:10
von /me
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?
Re: css in bottle template
Verfasst: Mittwoch 9. Mai 2012, 12:15
von lackschuh
/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
Re: css in bottle template
Verfasst: Mittwoch 9. Mai 2012, 12:57
von /me
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:
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.
Re: css in bottle template
Verfasst: Mittwoch 9. Mai 2012, 13:19
von lackschuh
Hi
Super, funktioniert.
Re: css in bottle template
Verfasst: Donnerstag 4. Oktober 2012, 19:47
von friedduck
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:
Nicht vergessen:
Vll. kanns ja jmd. gebrauchen.
MfG Friedduck
Re: css in bottle template
Verfasst: Donnerstag 4. Oktober 2012, 20:04
von 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.
Re: css in bottle template
Verfasst: Donnerstag 4. Oktober 2012, 20:09
von friedduck
Du hast recht, das Beispiel würde nicht unter Linux laufen, habs jetzt korrigiert.