This commit breaks up the `Application.__call__` method into smaller methods that can be overridden by subclasses. These methods allow customization of various steps of the request/response handling process: * `make_request`: Create the `Request` object from the WSGI environment dictionary. The default implementation creates a `milla.Request` object, copies the application configuration to its `config` attribute, and handles "emulated" HTTP methods from POST data. * `resolve_path`: Locates a controller callable from the given path info. The default implementation calls the `resolve` method on the application's `dispatcher` attribute. If `UnresolvePath` is raised, it returns a callable that raises `HTTPNotFound`. * `handle_error`: Called inside the exception handler when a controller callable raises an exception. The method should return a callable WSGI application (such as a `Response` or `WSGIHTTPException` object). To access the exception that was raised, use the `sys.exc_info` function. The default implementation returns the exception if it is an instance of `WSGIHTTPException`, or re-raises the exception otherwise. This allows middleware applications to handle the exception, if desired. |
||
---|---|---|
.settings | ||
doc | ||
src/milla | ||
test | ||
.hgignore | ||
.hgtags | ||
.project | ||
.pydevproject | ||
COPYING | ||
MANIFEST.in | ||
README | ||
distribute_setup.py | ||
milla.svg | ||
setup.cfg | ||
setup.py |
README
.. vim: set ft=rst : ===== Milla ===== *Milla* is a simple and lightweight web framework for Python. It built on top of `WebOb`_ and thus implements the `WSGI`_ standard. It aims to be easy to use while imposing no restrictions, allowing web developers to write code the way they want, using the tools, platform, and extensions they choose. To get started using *Milla* right away, visit `Downloads`_ to get the latest version, then read the `Documentation`_. Example ======= .. code:: python from wsgiref import simple_server from milla.dispatch import routing import milla def hello(request): return 'Hello, world!' router = routing.Router() router.add_route('/', hello) app = milla.Application(router) httpd = simple_server.make_server('', 8080, app) httpd.serve_forever() .. _WebOb: http://webob.org/ .. _WSGI: http://wsgi.readthedocs.org/ .. _Downloads: https://bitbucket.org/AdmiralNemo/milla/downloads .. _Documentation: http://milla.readthedocs.org/