Request » History » Version 4
« Previous -
Version 4/23
(diff) -
Next » -
Current version
Elmer de Looff, 2012-04-27 12:00
Query arguments doc'd
Request¶
The Request
object is an abstraction of the incoming HTTP request. This allows one simple interface that is independent of the underlying server that µWeb runs on (either Standalone using BaseHTTPServer, or Apache mode on mod_python
).
From PageMaker methods, the request object is accessible as the self.req
member. The request object contains all the information about the incoming request: query arguments, post data, cookies and environment data. It is also the object where you define cookies that need to be provided to the client.
Query arguments¶
All query arguments provided by the client are present on the request object. They are also accessible directly on the PageMaker object. The following code demonstrates both ways to access a query argument:
def QueryTeller(self):
# Retrieves the 'name' argument from the request object:
name = self.req.vars['get'].getfirst('name')
# Retrieves the 'name' argument directly from the PageMaker instance (linked to the request):
name = self.get.getfirst('name')
return name
Using the getfirst
method, you get a single string returned from the query argument mapping, or a None
if no such value exists. Much like a dictionary's get
method, you can provide a second argument to the method, and have that returned instead as the default.
Now, HTTP allows the client to provide the same query argument multiple times. Using getfirst
you would only get the very first defined argument. So a request that looks like http://example.org/group?name=Bob&name=Mark&name=Jenny
would only return 'Bob' in the previous example. To get all their names printed, you can use the following:
def QueryTeller(self):
names = self.get.getlist('name')
return ', '.join(names)
This returns a neat comma-separated string with all the provided names. The getlist
method does not take a default, but will instead return an empty list when there are no values for the requested argument name.
Post vars¶
POST arguments can be found under: self.post and should be accessed by issueing a 'getfirst()', or 'getlist()' call for the desired key.
self.post.getfirst() allows for a second argument to set a default if the desired key isn't set by the browser
argA = self.post.getfirst('argA') argB = self.post.getfirst('argB', 'empty') if 'argA' in self.post: #pass, argA has been send by the browser
Get vars¶
GET arguments can be found under: self.get, they work the same as POST vars.
Cookies¶
self.cookies contains the cookies send by the browser, as the interface to create them from the server.
Retrieving a cookie
You can fetch the content of cookie by accessig the self.cookie dict with the name of the desired cookie as its key.
The returned cookie object has a value member containing the actual value of the requested cookie.
self.cookies['sample'].value
self.cookies['sample'].value
ENV¶
The env variable is a dictionary containing the following items;- CONTENT_TYPE
- CONTENT_LENGTH
- HTTP_COOKIE
- HTTP_HOST
- HTTP_REFERER
- HTTP_USER_AGENT
- PATH_INFO
- QUERY_STRING
- REMOTE_ADDR
- REQUEST_METHOD
- UWEB_MODE 'STANDALONE' / 'MOD_PYTHON'
Extended env
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.¶
- AUTH_TYPE
- CONNECTION_ID
- DOCUMENT_ROOT
- RAW_REQUEST
- REMOTE_HOST
- REMOTE_USER
- SERVER_NAME
- SERVER_PORT
- SERVER_LOCAL_NAME
- SERVER_LOCAL_IP
- SERVER_PROTOCOL
mod_python
setup you will also get:
- MODPYTHON_HANDLER
- MODPYTHON_INTERPRETER
- MODPYTHON_PHASE