Below is an example demonstrating the full way to use the module. If you do not need this level of control over the web.session module you can direcly use the web.session.start()
method. An example of the same code written in this simpler way was shown earlier in the documentation.
Here is a full example showing the creation of all the necessary objects and giving you full control over the session:
#!/usr/bin/env python # show python where the modules are import sys; sys.path.append('../'); sys.path.append('../../../') import web.error; web.error.enable() import os, time import web.database # Setup a database connection connection = web.database.connect( adapter="snakesql", database="webserver-session", autoCreate = 1, ) cursor = connection.cursor() # Create a session driver and make sure the database tables exist import web.session driver = web.session.driver('database', environment='testEnv', cursor=cursor) if not driver.completeSessionEnvironment(): driver.removeSessionEnvironment(ignoreErrors=True) driver.createSessionEnvironment() # Set up a session manager and load or create a new session manager = web.session.manager(driver=driver, expire=10) sessionID = manager.cookieSessionID() if not manager.load(sessionID): manager.create(sendCookieHeaders=False) manager.sendCookieHeaders() # Get the session store for this application store = manager.store('testApp') def printPage(title, url, link, url2, link2, data): print """ <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) # Write a simple application if not manager.created: if web.cgi.has_key('destroy') and web.cgi['destroy'].value == 'True': manager.destroy(ignoreWarning=True, sendCookieHeaders=False) manager.sendCookieHeaders() print web.header('text/html') printPage( 'Session Destroyed', os.environ['SCRIPT_NAME'], 'Start Again', '','','' ) else: print web.header('text/html') manager.setExpire(manager.expireTime+5) data = [] data.append('SessionID: ' +manager.sessionID) data.append('Store Keys: '+str(store.keys())) data.append('Store App: '+store.app) data.append('Variable1: '+str(store['Variable1'])) data.append('ExpireTime: '+str(manager.expireTime)) printPage( 'Welcome back', os.environ['SCRIPT_NAME'], 'Visit Again', os.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: print web.header('text/html') store['Variable1'] = 'Python Rules!' printPage( 'New Session Started', os.environ['SCRIPT_NAME'], 'Visit Again', '', '', "Set variable1 to 'Python Rules!'" ) connection.commit() # Save changes connection.close() # Close the database connection
You can test this example by running the webserver scripts/webserver.py and visiting http://localhost:8080/doc/src/lib/webserver-web-session.py