### Navigation

- index
- modules |
- next |
- previous |
- TurboGears 2.1.5 documentation »
- Search:
- Extended Table of Contents »
- The Gears in Detail »
- Modules »

# `pylons.wsgiapp` – PylonsWSGI App Creator

WSGI App Creator

This module is responsible for creating the basic Pylons WSGI application (PylonsApp). It’s generally assumed that it will be called by Paste, though any WSGI server could create and call the WSGI app as well.

## Module Contents

class `pylons.wsgiapp.``PylonsApp`(config=None, **kwargs)

  Pylons WSGI Application

  This basic WSGI app is provided should a web developer want to get access to the most basic Pylons web application environment available. By itself, this Pylons web application does little more than dispatch to a controller and setup the context object, the request object, and the globals object.

  Additional functionality like sessions, and caching can be setup by altering the `environ['pylons.environ_config']` setting to indicate what key the `session` and `cache` functionality should come from.

  Resolving the URL and dispatching can be customized by sub-classing or “monkey-patching” this class. Subclassing is the preferred approach.

  `__call__`(environ, start_response)

    Setup and handle a web request

    PylonsApp splits its functionality into several methods to make it easier to subclass and customize core functionality.

    The methods are called in the following order:

    1. `setup_app_env()`
    2. `load_test_env()` (Only if operating in testing mode)
    3. `resolve()`
    4. `dispatch()`

    The response from `dispatch()` is expected to be an iterable (valid PEP 333 WSGI response), which is then sent back as the response.

  `dispatch`(controller, environ, start_response)

    Dispatches to a controller, will instantiate the controller if necessary.

    Override this to change how the controller dispatch is handled.

  `find_controller`(controller)

    Locates a controller by attempting to import it then grab the SomeController instance from the imported module.

    Controller name is assumed to be a module in the controllers directory unless it contains a ‘.’ or ‘:’ which is then assumed to be a dotted path to the module and name of the controller object.

    Override this to change how the controller object is found once the URL has been resolved.

  `load_test_env`(environ)

    Sets up our Paste testing environment

  `register_globals`(environ)

    Registers globals in the environment, called from `setup_app_env()`

    Override this to control how the Pylons API is setup. Note that a custom render function will need to be used if the `pylons.app_globals` global is not available.

  `resolve`(environ, start_response)

    Uses dispatching information found in `environ['wsgiorg.routing_args']` to retrieve a controller name and return the controller instance from the appropriate controller module.

    Override this to change how the controller name is found and returned.

  `setup_app_env`(environ, start_response)

    Setup and register all the Pylons objects with the registry

    After creating all the global objects for use in the request, `register_globals()` is called to register them in the environment.