File: dir-handlers-syn.html

package info (click to toggle)
libapache-mod-python 2%3A2.7.10-4
  • links: PTS
  • area: main
  • in suites: sarge
  • size: 1,352 kB
  • ctags: 853
  • sloc: ansic: 2,785; python: 1,123; makefile: 298; sh: 172
file content (151 lines) | stat: -rw-r--r-- 5,547 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
<!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">
<link rel="STYLESHEET" href="modpython.css">
<link rel="first" href="modpython.html">
<link rel="contents" href="contents.html" title="Contents">
<link rel="index" href="genindex.html" title="Index">
<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.10, documentation updated on December 07, 2003.</span>
</DIV>
<!--End of Navigation Panel-->

</BODY>
</HTML>