Project

General

Profile

Request » History » Version 1

Jan Klopper, 2012-03-13 15:37

1 1 Jan Klopper
h1. Request
2 1 Jan Klopper
3 1 Jan Klopper
The request object in µWeb makes sure each request from the browser, independent of coming from a mod_python instance or the [[standalone]] server looks the same.
4 1 Jan Klopper
5 1 Jan Klopper
You can reach the request object inside a [[pagemaker]] by using the self.req variable.
6 1 Jan Klopper
It is presented as an object with the following members:
7 1 Jan Klopper
8 1 Jan Klopper
* env
9 1 Jan Klopper
* headers
10 1 Jan Klopper
11 1 Jan Klopper
h2. Post vars
12 1 Jan Klopper
13 1 Jan Klopper
POST arguments can be found under: self.post and should be accessed by issueing a 'getfirst()', or 'getlist()' call for the desired key.
14 1 Jan Klopper
self.post.getfirst() allows for a second argument to set a default if the desired key isn't set by the browser
15 1 Jan Klopper
16 1 Jan Klopper
<pre>
17 1 Jan Klopper
<code class="html">
18 1 Jan Klopper
argA = self.post.getfirst('argA')
19 1 Jan Klopper
argB = self.post.getfirst('argB', 'empty')
20 1 Jan Klopper
21 1 Jan Klopper
if 'argA' in self.post:
22 1 Jan Klopper
  #pass, argA has been send by the browser
23 1 Jan Klopper
24 1 Jan Klopper
</code>
25 1 Jan Klopper
</pre>
26 1 Jan Klopper
27 1 Jan Klopper
h2. Get vars
28 1 Jan Klopper
29 1 Jan Klopper
GET arguments can be found under: self.get, they work the same as POST vars.
30 1 Jan Klopper
31 1 Jan Klopper
h2. Cookies
32 1 Jan Klopper
## TODO
33 1 Jan Klopper
self.cookies contains the cookies send by the browser, as the interface to create them from the server.
34 1 Jan Klopper
35 1 Jan Klopper
h3. Retrieving a cookie
36 1 Jan Klopper
You can fetch the content of cookie by accessig the self.cookie dict with the name of the desired cookie as its key.
37 1 Jan Klopper
The returned cookie object has a value member containing the actual value of the requested cookie.
38 1 Jan Klopper
<pre>
39 1 Jan Klopper
<code class="python">
40 1 Jan Klopper
self.cookies['sample'].value
41 1 Jan Klopper
</code>
42 1 Jan Klopper
</pre>
43 1 Jan Klopper
44 1 Jan Klopper
h2. ENV
45 1 Jan Klopper
46 1 Jan Klopper
The env variable is a dictionary containing the following items;
47 1 Jan Klopper
* CONTENT_TYPE
48 1 Jan Klopper
* CONTENT_LENGTH
49 1 Jan Klopper
* HTTP_COOKIE
50 1 Jan Klopper
* HTTP_HOST
51 1 Jan Klopper
* HTTP_REFERER
52 1 Jan Klopper
* HTTP_USER_AGENT
53 1 Jan Klopper
* PATH_INFO
54 1 Jan Klopper
* QUERY_STRING
55 1 Jan Klopper
* REMOTE_ADDR
56 1 Jan Klopper
* REQUEST_METHOD
57 1 Jan Klopper
* UWEB_MODE 'STANDALONE' / 'MOD_PYTHON'
58 1 Jan Klopper
59 1 Jan Klopper
h3. Extended env
60 1 Jan Klopper
If more detail is required about the environment, you can issue a call to the self.req.ExtendedEnvironment() method, which will inject more details into the env var. This is a much slower operation than the normal env call, so that's why its tucked away in a separate method.
61 1 Jan Klopper
62 1 Jan Klopper
* AUTH_TYPE
63 1 Jan Klopper
* CONNECTION_ID
64 1 Jan Klopper
* DOCUMENT_ROOT
65 1 Jan Klopper
* RAW_REQUEST
66 1 Jan Klopper
* REMOTE_HOST
67 1 Jan Klopper
* REMOTE_USER
68 1 Jan Klopper
* SERVER_NAME
69 1 Jan Klopper
* SERVER_PORT
70 1 Jan Klopper
* SERVER_LOCAL_NAME
71 1 Jan Klopper
* SERVER_LOCAL_IP
72 1 Jan Klopper
* SERVER_PROTOCOL
73 1 Jan Klopper
74 1 Jan Klopper
And in case of a mod_python setup you will also get:
75 1 Jan Klopper
* MODPYTHON_HANDLER
76 1 Jan Klopper
* MODPYTHON_INTERPRETER
77 1 Jan Klopper
* MODPYTHON_PHASE
78 1 Jan Klopper
79 1 Jan Klopper
h2. Persistent storage between requests
80 1 Jan Klopper
81 1 Jan Klopper
µWeb allows you to store objects in persistent storage if in [[standalone]] to avoid recreating them every single request. for this purpose the self.persistent member exists from which you can read with the 'Get()' method and write to using the 'Set()' method.
82 1 Jan Klopper
83 1 Jan Klopper
self.persistent.Set() takes two arguments, a key by which to retrieve the value later and the value itself (which can be any python object)