Examples of serving static files ================================ The ``quixote.util`` module includes classes for making files and directories available as Quixote resources. Here are some examples. Publishing a Single File ------------------------ The ``StaticFile`` class makes an individual filesystem file (possibly a symbolic link) available. You can also specify the MIME type and encoding of the file; if you don't specify this, the MIME type will be guessed using the standard Python ``mimetypes.guess_type()`` function. The default action is to not follow symbolic links, but this behaviour can be changed using the ``follow_symlinks`` parameter. The following example publishes a file with the URL ``.../stylesheet_css``:: # 'stylesheet_css' must be in the _q_exports list _q_exports = [ ..., 'stylesheet_css', ...] stylesheet_css = StaticFile( "/htdocs/legacy_app/stylesheet.css", follow_symlinks=1, mime_type="text/css") If you want the URL of the file to have a ``.css`` extension, you use the external to internal name mapping feature of ``_q_exports``. For example:: _q_exports = [ ..., ('stylesheet.css', 'stylesheet_css'), ...] Publishing a Directory ---------------------- Publishing a directory is similar. The ``StaticDirectory`` class makes a complete filesystem directory available. Again, the default behaviour is to not follow symlinks. You can also request that the ``StaticDirectory`` object cache information about the files in memory so that it doesn't try to guess the MIME type on every hit. This example publishes the ``notes/`` directory:: _q_exports = [ ..., 'notes', ...] notes = StaticDirectory("/htdocs/legacy_app/notes")