Sophie

Sophie

distrib > Mandriva > 8.2 > i586 > media > contrib > by-pkgid > 12aef6395c3678c929b08cd723fc1673 > files > 35

mod_python-2.7.6-1mdk.i586.rpm

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>5.1.1 Python*Handler Directive Syntax</title>
<META NAME="description" CONTENT="5.1.1 Python*Handler Directive Syntax">
<META NAME="keywords" CONTENT="modpython">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link rel="STYLESHEET" href="modpython.css">
<LINK REL="next" href="dir-handlers-prrh.html">
<LINK REL="previous" href="dir-handlers.html">
<LINK REL="up" href="dir-handlers.html">
<LINK REL="next" href="dir-handlers-prrh.html">
</head>
<body>
<DIV CLASS="navigation">
<table align="center" width="100%" cellpadding="0" cellspacing="2">
<tr>
<td><A href="dir-handlers.html"><img src="icons/previous.gif"
  border="0" height="32"
  alt="Previous Page" width="32"></A></td>
<td><A href="dir-handlers.html"><img src="icons/up.gif"
  border="0" height="32"
  alt="Up One Level" width="32"></A></td>
<td><A href="dir-handlers-prrh.html"><img src="icons/next.gif"
  border="0" height="32"
  alt="Next Page" width="32"></A></td>
<td align="center" width="100%">Mod_python Manual</td>
<td><A href="contents.html"><img src="icons/contents.gif"
  border="0" height="32"
  alt="Contents" width="32"></A></td>
<td><img src="icons/blank.gif"
  border="0" height="32"
  alt="" width="32"></td>
<td><A href="genindex.html"><img src="icons/index.gif"
  border="0" height="32"
  alt="Index" width="32"></A></td>
</tr></table>
<b class="navlabel">Previous:</b> <a class="sectref" href="dir-handlers.html">5.1 Handlers</A>
<b class="navlabel">Up:</b> <a class="sectref" href="dir-handlers.html">5.1 Handlers</A>
<b class="navlabel">Next:</b> <a class="sectref" href="dir-handlers-prrh.html">5.1.2 PythonPostReadRequestHandler</A>
<br><hr>
</DIV>
<!--End of Navigation Panel-->

<H2><A NAME="SECTION007110000000000000000">&nbsp;</A>
<a name='l2h-134'>&nbsp;</a>
<BR>
5.1.1 Python*Handler Directive Syntax
</H2>

<P>
All <b>Python*Handler</b> directives have the following syntax: 

<P>
<code>Python*Handler <i>handler [handler]</i> ...</code>

<P>
Where <i>handler</i> is a callable object (e.g. a function) that accepts a
single argument - request object.

<P>
Multiple handlers can be specified on a single line, in which case
they will be called sequentially, from left to right. Same handler
directives can be specified multiple times as well, with the same
result - all handlers listed will be executed sequentially, from first
to last. If any handler in the sequence returns a value other than
<code>apache.OK</code>, then execution of all subsequent handlers is aborted.

<P>
A <i>handler</i> has the following syntax: 

<P>
<code>module[::object] [module::[object]] ...</code>

<P>
Where module can be a full module name (package dot notation is
accepted), and the optional object is the name of an object inside the
module.

<P>
Object can also contain dots, in which case it will be resolved from
left to right. During resolution, if mod_python encounters an object
of type <code>&lt;class&gt;</code>, it will try instantiate it passing it a single
argument, a request object.

<P>
If no object is specified, then it will default to the directive of
the handler, all lower case, with the word "<tt class="samp">Python</tt>"removed. E.g. the default object for PythonAuthenHandler would be
authenhandler.

<P>
Example: 

<P>
<dl><dd><pre class="verbatim">
PythonAuthzHandler mypackage.mymodule::checkallowed
</pre></dl>

<P>
For more information on handlers, see Overview of a Handler.

<P>
Side note: The "::" was chosen for performance reasons. In order for
Python to use objects inside modules, the modules first need to be
imported. However, if the separator were simply a ".", it would
involve a much more complex process of sequentially evaluating every
word to determine whether it is a package, module, class etc. Using
the (admittedly un-Python-like) "::" takes the time consuming work of
figuring out where the module ends and the object inside of it begins
away from mod_python resulting in a modest performance gain..

<P>

<DIV CLASS="navigation">
<p><hr>
<table align="center" width="100%" cellpadding="0" cellspacing="2">
<tr>
<td><A href="dir-handlers.html"><img src="icons/previous.gif"
  border="0" height="32"
  alt="Previous Page" width="32"></A></td>
<td><A href="dir-handlers.html"><img src="icons/up.gif"
  border="0" height="32"
  alt="Up One Level" width="32"></A></td>
<td><A href="dir-handlers-prrh.html"><img src="icons/next.gif"
  border="0" height="32"
  alt="Next Page" width="32"></A></td>
<td align="center" width="100%">Mod_python Manual</td>
<td><A href="contents.html"><img src="icons/contents.gif"
  border="0" height="32"
  alt="Contents" width="32"></A></td>
<td><img src="icons/blank.gif"
  border="0" height="32"
  alt="" width="32"></td>
<td><A href="genindex.html"><img src="icons/index.gif"
  border="0" height="32"
  alt="Index" width="32"></A></td>
</tr></table>
<b class="navlabel">Previous:</b> <a class="sectref" href="dir-handlers.html">5.1 Handlers</A>
<b class="navlabel">Up:</b> <a class="sectref" href="dir-handlers.html">5.1 Handlers</A>
<b class="navlabel">Next:</b> <a class="sectref" href="dir-handlers-prrh.html">5.1.2 PythonPostReadRequestHandler</A>
<hr>
<span class="release-info">Release 2.7.6, documentation updated on August 04, 2001.</span>
</DIV>
<!--End of Navigation Panel-->

</BODY>
</HTML>