2018-02-24 15:39 更新


Middlewares wrap applications to dispatch between then or provideadditional request handling. Additionally to the middlewares documentedhere, there is also the DebuggedApplication class that isimplemented as a WSGI middleware.

class werkzeug.wsgi.SharedDataMiddleware(app, exports, disallow=None, cache=True, cache_timeout=43200, fallback_mimetype='text/plain')
A WSGI middleware that provides static content for developmentenvironments or simple server setups. Usage is quite simple:

import os
from werkzeug.wsgi import SharedDataMiddleware

app = SharedDataMiddleware(app, {
    '/shared': os.path.join(os.path.dirname(__file__), 'shared')

The contents of the folder ./shared will now be available onhttp://example.com/shared/. This is pretty useful during developmentbecause a standalone media server is not required. One can also mountfiles on the root folder and still continue to use the application becausethe shared data middleware forwards all unhandled requests to theapplication, even if the requests are below one of the shared folders.

If pkg_resources is available you can also tell the middleware to servefiles from package data:

app = SharedDataMiddleware(app, {
    '/shared': ('myapplication', 'shared_files')

This will then serve the shared_files folder in the myapplicationPython package.

The optional disallow parameter can be a list of fnmatch() [http://docs.python.org/dev/library/fnmatch.html#fnmatch.fnmatch]rules for files that are not accessible from the web. If cache is set toFalse no caching headers are sent.

Currently the middleware does not support non ASCII filenames. If theencoding on the file system happens to be the encoding of the URI it maywork but this could also be by accident. We strongly suggest using ASCIIonly file names for static files.

The middleware will guess the mimetype using the Python mimetypemodule. If it's unable to figure out the charset it will fall backto fallback_mimetype.

在 0.5 版更改: The cache timeout is configurable now.

0.6 新版功能: The fallback_mimetype parameter was added.

  • app – the application to wrap. If you don't want to wrap anapplication you can pass it NotFound.
  • exports – a dict of exported files and folders.
  • disallow – a list of fnmatch() [http://docs.python.org/dev/library/fnmatch.html#fnmatch.fnmatch] rules.
  • fallback_mimetype – the fallback mimetype for unknown files.
  • cache – enable or disable caching headers.
Param cache_timeout:

the cache timeout in seconds for the headers.

Subclasses can override this method to disallow the access tocertain files. However by providing disallow in the constructorthis method is overwritten.

class werkzeug.wsgi.DispatcherMiddleware(app, mounts=None)
Allows one to mount middlewares or applications in a WSGI application.This is useful if you want to combine multiple WSGI applications:

app = DispatcherMiddleware(app, {
    '/app2':        app2,
    '/app3':        app3

Also there's the …

Like the name says. But who knows how it works?