pecan.core – Pecan Core

The pecan.core module is the base module for creating and extending Pecan. The core logic for processing HTTP requests and responses lives here.

class pecan.core.Pecan(*args, **kw)

Bases: pecan.core.PecanBase

Pecan application object. Generally created using pecan.make_app, rather than being created manually.

Creates a Pecan application instance, which is a WSGI application.

Parameters
  • root – A string representing a root controller object (e.g., “myapp.controller.root.RootController”)

  • default_renderer – The default template rendering engine to use. Defaults to mako.

  • template_path – A relative file system path (from the project root) where template files live. Defaults to ‘templates’.

  • hooks – A callable which returns a list of pecan.hooks.PecanHook

  • custom_renderers – Custom renderer objects, as a dictionary keyed by engine name.

  • extra_template_vars – Any variables to inject into the template namespace automatically.

  • force_canonical – A boolean indicating if this project should require canonical URLs.

  • guess_content_type_from_ext – A boolean indicating if this project should use the extension in the URL for guessing the content type to return.

  • use_context_locals – When True, pecan.request and pecan.response will be available as thread-local references.

  • request_cls – Can be used to specify a custom pecan.request object. Defaults to pecan.Request.

  • response_cls – Can be used to specify a custom pecan.response object. Defaults to pecan.Response.

find_controller(_state)

The main request handler for Pecan applications.

handle_hooks(hooks, *args, **kw)

Processes hooks of the specified type.

Parameters
  • hook_type – The type of hook, including before, after, on_error, and on_route.

  • *args – Arguments to pass to the hooks.

class pecan.core.Request(environ, charset=None, unicode_errors=None, decode_param_names=None, **kw)

Bases: webob.request.Request

class pecan.core.Response(body=None, status=None, headerlist=None, app_iter=None, content_type=None, conditional_response=None, charset=<object object>, **kw)

Bases: webob.response.Response

pecan.core.abort(status_code, detail='', headers=None, comment=None, **kw)

Raise an HTTP status code, as specified. Useful for returning status codes like 401 Unauthorized or 403 Forbidden.

Parameters
  • status_code – The HTTP status code as an integer.

  • detail – The message to send along, as a string.

  • headers – A dictionary of headers to send along with the response.

  • comment – A comment to include in the response.

pecan.core.load_app(config, **kwargs)

Used to load a Pecan application and its environment based on passed configuration.

Parameters

config – Can be a dictionary containing configuration, a string which represents a (relative) configuration filename

returns a pecan.Pecan object

pecan.core.override_template(template, content_type=None)

Call within a controller to override the template that is used in your response.

Parameters
  • template – a valid path to a template file, just as you would specify in an @expose.

  • content_type – a valid MIME type to use for the response.func_closure

pecan.core.redirect(location=None, internal=False, code=None, headers={}, add_slash=False, request=None)

Perform a redirect, either internal or external. An internal redirect performs the redirect server-side, while the external redirect utilizes an HTTP 302 status code.

Parameters
  • location – The HTTP location to redirect to.

  • internal – A boolean indicating whether the redirect should be internal.

  • code – The HTTP status code to use for the redirect. Defaults to 302.

  • headers – Any HTTP headers to send with the response, as a dictionary.

  • request – The pecan.Request instance to use.

pecan.core.render(template, namespace, app=None)

Render the specified template using the Pecan rendering framework with the specified template namespace as a dictionary. Useful in a controller where you have no template specified in the @expose.

Parameters
  • template – The path to your template, as you would specify in @expose.

  • namespace – The namespace to use for rendering the template, as a dictionary.

  • app – The instance of pecan.Pecan to use