2012-05-07 4 views
9

Ich versuche, eine Anwendung einzurichten, die eine Vorlage HTML-Datei nimmt und ändert es live. Es funktioniert in gewissem Umfang, aber die Bilder und CSS auf den Seiten werden nicht bedient und es gibt HTTP 500-Fehler auf der Konsole, wenn sie angefordert werden.Statische Dateien, die nicht auf Flasche in Python geliefert werden

Das ist meine Verzeichnisstruktur

Server/ 
    assets/ 
     css/ 
      img/ 
      jquery.css 
      kickstart.css 
      zellner.css 
     js/ 
      jquery.min.js 
      kickstart.js 
     style.css 
     tb_404.png 
     tbrun1.png 
     tbservers.png 
    403.html 
    404.html 
    500.html 
    appid 
    index.html 
    maintenance.html 
    server.log 
    server.py 

Dies ist, wie ich das Routing in server.py einzurichten:

@error(403) 
def error403(error): 
    return static_file("403.html") 

@error(404) 
def error404(error): 
    return static_file("404.html") 

@error(500) 
def error500(error): 
    return static_file("500.html") 

@route('assets/<filepath:path>') 
def server_static(filepath): 
    return static_file(filepath, root='assets') 

Und in meinen HTML-Dateien, die Dateien wie folgt verknüpft sind:

<script type="text/javascript" src="assets/js/jquery.snippet.min.js"></script> 

Könnte es aufgrund der Statik in Unterverzeichnissen in Assets/sein? Oder habe ich komplett missverstanden, wie man static_file benutzt?

Dies ist die Art von Fehler, die ich auf der Python-Konsole erhalten:

[07/May/2012 10:51:05] "GET /tempus/23 HTTP/1.1" 200 4501 <h1>Critical error while processing request: /tempus/assets/js/jquery.snippet.min.js</h1> 

Ich verstehe nicht, warum es das Routing zu/tempus/assets/...

Jede Hilfe? Vielen Dank!

Antwort

10

Ich hatte auch Probleme mit der Bereitstellung von statischen Dateien. Hier ist meine Lösung:

@route('/static/:filename#.*#') 
def send_static(filename): 
    return static_file(filename, root='./static/') 

und wenn Sie auf eine statische Datei z. eine Template-Datei:

@route('/') 
def index(): 
    output = template('static/index.tpl') 
    return output 
+0

Gespeichert mich! Korrekte Antwort! Vielen Dank! – Jmrapp

1

Ihre @route Dekorateur ist falsch für serve_static.

Es sollte @route ('/ assets /') lesen