A Flask extionsion to serve XStatic files. Can be useful if you don't use an asset pipeline and want to serve e.g. XStatic packaged javascript files like JQuery directly.
Upon initialization tell Flask about the XStatic modules you want to use. This example uses JQuery and D3:
app = Flask(__name__)
app.config.from_object(__name__)
app.config.['XSTATIC_MODULES'] = ['jquery', 'd3']
xsf = XStaticFiles(app)
The modules can be given as list or comma separated (jquery,d3
).
The extension already installs a route handler for you so files under
/xstatic/<module>/
are served automatically. To generate these
URLs you can use url_for
:
xsf.url_for('jquery', 'jquery.min.js')
In templates you can use xstatic_url_for
:
<script type=text/javascript src="{{ xstatic_url_for(module='jquery', path='jquery.min.js') }}"></script>
to generate these URLs. This has the advantage that you can later
serve files from a static web server by adjusting XSTATIC_ROOT
and
XSTATIC_PROTO
without having to modify any code.
In case you want to serve XStatic files from other URLs use serve
or serve_or_404
:
@app.route('/somewhere-else/jquery/jquery.min.js')
def serve_jquery():
return xsf.serve_or_404('jquery', 'jquery.min.js')