2012-05-07 6 views
9

Sto provando a impostare un'applicazione che richiede un file HTML modello e lo modifica dal vivo. Funziona in una certa misura, ma le immagini e i CSS nelle pagine non vengono serviti, e ci sono errori HTTP 500 sulla console quando vengono richiesti.File statici non offerti su Bottle in Python

Questa è la mia struttura di directory

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 

Ecco come ho creato il percorso in server.py:

@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') 

E nei miei file html, i file sono collegati in questo modo:

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

Potrebbe essere dovuto al fatto che la statica sia in sottodirectory di risorse /? O ho completamente frainteso come usare static_file?

Questo è il tipo di errore che ottengo sulla console Python:

[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> 

Non capisco perché è il routing a/Tempus/attività/...

Qualsiasi aiuto? Grazie!

risposta

10

Ho anche avuto problemi con i file statici. Ecco la mia soluzione:

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

e quando si desidera accedere ad un file statico es. un file di modello:

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

Salvato da me! Risposta corretta! Grazie! – Jmrapp

1

Il decoratore @route non è corretto per serve_static.

Dovrebbe essere letto @route ('/ assets /')