Bottle and "local" libs (js, css)?

Django, Flask, Bottle, WSGI, CGI…
Antworten
gNeandr
User
Beiträge: 68
Registriert: Sonntag 11. Mai 2014, 16:48

Um in einem bottle basierenden Projekt für die html Seiten andere Librarys zu laden, versuche ich es mit den folgenden Befehlen auf der entsprechenden template.tpl Seite:

Code: Alles auswählen

<link rel="stylesheet" type="text/css" href="static/bootstrap-clockpicker.min.css">
<script src="static/bootstrap-clockpicker.min.js"></script>
Dabei habe ich die folgende Verzeichnis Struktur:

Code: Alles auswählen

meinProject
   |_____meinPython.py
   |_____dasTemplate.tpl
   |_____static
                 |_______bootstrap-clockpicker.min.css
                 |_______bootstrap-clockpicker.min.js
Leider bekomme ich auf der FX console:
GET http://192.168.178.xx:yyyy/static/bootstrap-clockpicker.min.css [HTTP/1.0 404 Not Found 32ms]
GET http://192.168.178.xx:yyyy/static/bootstrap-clockpicker.min.js [HTTP/1.0 404 Not Found 45ms]

Was mache ich falsch?
Sirius3
User
Beiträge: 17750
Registriert: Sonntag 21. Oktober 2012, 17:20

@gNeandr: wohin wir denn Dein meinProject/static-Verzeichnis hingemappt? Zeig doch man Deinen Python-Code dazu.
gNeandr
User
Beiträge: 68
Registriert: Sonntag 11. Mai 2014, 16:48

Ich denke weiterer Code hilft nicht wirklich weiter.

Die geposteten beiden Zeilen sind im tpl, also werden mit dem Header des html files geladen. Und dies schlägt fehl, siehe console.

Die Frage ist doch wo müssen die js, css libs gespeichert werden und wie ist der Befehl im tpl bzw. Html file.
Sirius3
User
Beiträge: 17750
Registriert: Sonntag 21. Oktober 2012, 17:20

@gNeandr: das hat nichts mit html oder Templates zu tun. Du mußt bottle in Python sagen, wo es die static-Dateien bereitstellen soll, bzw. wenn Du einen eigenen Webserver verwendest, mußt Du ihn entsprechend konfigurieren.
gNeandr
User
Beiträge: 68
Registriert: Sonntag 11. Mai 2014, 16:48

Ja und das ist genau mein Problem. Ich bin auf der Suche nach der notwendigen Notierung in der tpl oder dem py und der daraus sich ergebenden File Struktur.

Hoffe da kann jemand helfen, direkt oder per link. Mit suchen/goggle komme ich da nicht weiter.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

gNeandr hat geschrieben: Hoffe da kann jemand helfen, direkt oder per link. Mit suchen/goggle komme ich da nicht weiter.
http://lmgtfy.com/?q=bottle+static+files

Und dann verweist direkt der erste Link auf die Doku, in der man leicht folgenden Abschnitt findet: http://bottlepy.org/docs/dev/tutorial.h ... atic-files

;-)
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
gNeandr
User
Beiträge: 68
Registriert: Sonntag 11. Mai 2014, 16:48

@Hyperion

Danke für den Link.

Ich habe jetzt im meinPython.py Programm eingefügt:

Code: Alles auswählen

@route('/static/bootstrap-clockpicker.min.css')
@route('/static/bootstrap-clockpicker.min.js')
def server_static(filename):
    return static_file(filename, root='/home/pi/meinProject/')
und im tpl/html

Code: Alles auswählen

<link rel="stylesheet" type="text/css" href="static/bootstrap-clockpicker.min.css">
<script src="static/bootstrap-clockpicker.min.js"></script>
... geht aber leider nicht. Die Versuche "static" im py unterzubringen mit

Code: Alles auswählen

    return static_file(filename, root='/home/pi/meinProject/static')
und nicht im tpl/html geht auch nicht.
Leider ist da das Tutorial nicht klar ... at least für mich, SORRY.
Sirius3
User
Beiträge: 17750
Registriert: Sonntag 21. Oktober 2012, 17:20

@gNeandr: so wie es in der Dokumentation steht, hast Du's aber nicht versucht

Code: Alles auswählen

@route('/static/<filename>')
def server_static(filename):
    return static_file(filename, root='/home/pi/meinProject/static')
und im Template:

Code: Alles auswählen

<link rel="stylesheet" type="text/css" href="/static/bootstrap-clockpicker.min.css">
<script src="/static/bootstrap-clockpicker.min.js"></script>
gNeandr
User
Beiträge: 68
Registriert: Sonntag 11. Mai 2014, 16:48

@sirius3, @Hyperion

Danke für eure Geduld. Nach vielen verschiedenen Versuchen, Frust und einer längeren Atempause stellt sich heraus, dass der Befehl für

Code: Alles auswählen

@route('/static/<filename>')
in meiner Konfiguration unvollständig war. Da ich bottle starte mit

Code: Alles auswählen

app = Bottle()
muss es natürlich heißen:

Code: Alles auswählen

@app.route('/static/<filename>')
... die übliche Situation, wenn man nicht das ganze sieht. :roll:
Nichts für ungut!
Antworten