The web.wsgi.session module provides one class Session
application, [**params]) |
web.session.manager()
. If cursor is not specified it is assumed that you are using Database
middleware and the cursor is obtained from environ['web.database.cursor']
Entries added to environ:
environ['web.session']
SessionManager
object as returned by web.session.manager(). You can obtain a session store using store = self.environ['web.session'].store('testApp')
replacing 'testApp'
with the name of your application's store.
The web.wsgi.session.Session
middleware requires the presence of the Database
middleware and can be used as shown in the example below:
from web.wsgi import * class simpleApp(base.BaseApplication): def printPage(self, title, url, link, url2, link2, data): self.output(""" <html> <h1>%s</h1> <p><a href="%s">%s</a></p> <p><a href="%s">%s</a></p> <p>%s</p> </html>"""%(title, url, link, url2, link2, data) ) def start(self): # Write a simple application store = self.environ['web.session'].store('testApp') if not self.environ['web.session'].created: if self.environ['web.cgi'].has_key('destroy') and self.environ['web.cgi']['destroy'].value == 'True': self.environ['web.session'].destroy(ignoreWarning=True, sendCookieHeaders=False) self.headers.append(self.environ['web.session'].response_headers[-1]) self.printPage( 'Session Destroyed', self.environ['SCRIPT_NAME'], 'Start Again', '','','' ) else: self.environ['web.session'].setExpire(self.environ['web.session'].expireTime+5) self.environ['web.session'].setCookie() self.headers.append(self.environ['web.session'].response_headers[-1]) data = [] data.append('SessionID: '+self.environ['web.session'].sessionID) data.append('Store Keys: '+str(store.keys())) data.append('Store App: '+store.app) data.append('Variable1: '+str(store['Variable1'])) data.append('ExpireTime: '+str(self.environ['web.session'].expireTime)) self.printPage( 'Welcome back', self.environ['SCRIPT_NAME'], 'Visit Again', self.environ['SCRIPT_NAME']+'?destroy=True', 'Destroy Session', '<p>Every time you visit this page the expiry time increases 5 seconds</p>'+ '</p><p>'.join(data) ) else: store['Variable1'] = 'Python Rules!' self.printPage( 'New Session Started', self.environ['SCRIPT_NAME'], 'Visit Again', '', '', "Set variable1 to 'Python Rules!'" ) # Save changes self.environ['web.database.connection'].commit() application = error.Error( database.Database( session.Session( cgi.CGI( simpleApp(), ), expire = 10, autoCreate = 1, driver = 'database', ), adapter = 'snakesql', database = 'wsgi-session', autoCreate = 1 ), )
You can test this example by running the WSGI server scripts/WSGIServer.py and visiting http://localhost:8000/session