2012-05-07 14 views
9

Estoy tratando de configurar una aplicación que toma una plantilla de archivo HTML y la modifica en vivo. Está funcionando hasta cierto punto, pero las imágenes y CSS en las páginas no se están publicando, y hay errores HTTP 500 en la consola cuando se solicitan.No se sirven archivos estáticos en Bottle in Python

Esta es mi estructura de directorios

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 

Así es como me juego hasta la ruta en 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') 

Y en mis archivos html, los archivos están vinculados de esta manera:

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

¿Podría ser debido a que la estática está en subdirectorios en activos /? ¿O he entendido mal completamente cómo usar static_file?

Este es el tipo de error que consigo en la consola 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> 

No entiendo por qué se encaminar a/tempus/activos/...

Cualquier ayuda? ¡Gracias!

Respuesta

10

También tuve problemas para servir archivos estáticos. Aquí está mi solución:

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

y cuando desea acceder a un archivo estático, por ejemplo. un archivo de plantilla:

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

¡Me salvó! ¡Respuesta correcta! ¡Gracias! – Jmrapp

1

Su decorador @route es incorrecto para serve_static.

Debe leer @route ('/ assets /')

Cuestiones relacionadas