Static files not being served on Bottle in Python
bottle, css, javascript, python
Solution
I also had problems with serving static files. Here is my solution:
@route('/static/:filename#.*#')
def send_static(filename):
return static_file(filename, root='./static/')
and when you want to access a static file eg. a template file:
@route('/')
def index():
output = template('static/index.tpl')
return output
Problem
I'm trying to set an application up which takes a template HTML file and modifies it live. It's working to an extent, but the images and CSS on the pages aren't being served, and there are HTTP 500 errors on the console when they are requested. This is my directory structure ``` 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 ``` This is how I set up the routing 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') ``` And in my html files, the files are linked like this: ``` <script type="text/javascript" src="assets/js/jquery.snippet.min.js"></script> ``` Could it be due to the statics being in subdirectories in assets/? Or have I completely misunderstood how to use static_file? This is the type of error I get on the Python console: ``` [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> ``` I don't understand why it's routing to /tempus/assets/ ... Any help? Thanks!