Serving Static Files From Root “/” and not “/static” Using Flask

Note to self.

There’s some discussion about how to do this here, involving Werkzeug’s middleware.

This is another way to do it, assuming you have a folder called “static” under where the main application .py file is located:

from flask import Flask, request
app = Flask(__name__, static_url_path='')

def root():
return app.send_static_file('index.html')

By setting static_url_path to a blank string, it means any accesses to unrouted root URLs, will attempt to grab the associated file out of the static folder. What it also means is that if you have HTML in that folder (as would be the case if you’re using Node or some other server), the hrefs do not look like “/static/js/something.js” but just “/js/something.js”, which may be useful.

2 thoughts on “Serving Static Files From Root “/” and not “/static” Using Flask”

  1. The line:

    return tandem.send_static_file(‘index.html’)

    should be

    return app.send_static_file(‘index.html’)

    Thanks for writing up this tip.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.