52 lines
1.7 KiB
Plaintext
52 lines
1.7 KiB
Plaintext
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")
|
|
|
|
|