python cgi脚本可以写入和读取会话数据吗?如果是这样的话?有高级API还是我必须自己上课?
解决方法:
cgi上没有“会话”.如果您使用的是原始cgi,则必须滚动自己的会话处理代码.
基本上,会话通过创建唯一的cookie编号并将其在响应头上发送到客户端,然后在每个连接上检查此cookie来工作.将会话数据存储在服务器(内存,数据库,磁盘)上的某个位置,并使用cookie编号作为密钥,以便在客户端发出的每个请求中检索它.
但是cgi不是你在python中为web开发应用程序的方式.使用wsgi
.使用Web框架.
这是一个使用cherrypy的快速示例.cherrypy.tools.sessions是一个樱桃工具,可以自动处理cookie设置/检索和与数据的关联:
import cherrypy
class HelloSessionWorld(object):
@cherrypy.tools.sessions()
def index(self):
if 'data' in cherrypy.session:
return "You have a cookie! It says: %r" % cherrypy.session['data']
else:
return "You don't have a cookie. <a href='getcookie'>Get one</a>."
index.exposed = True
@cherrypy.tools.sessions()
def getcookie(self):
cherrypy.session['data'] = 'Hello World'
return "Done. Please <a href='..'>return</a> to see it"
getcookie.exposed = True
application = cherrypy.tree.mount(HelloSessionWorld(), '/')
if __name__ == '__main__':
cherrypy.quickstart(application)
请注意,此代码是一个wsgi应用程序,在某种意义上,您可以将其发布到任何支持wsgi的Web服务器(apache有mod_wsgi
).另外,cherrypy有自己的wsgi服务器,所以你可以用python运行代码,它将在http://localhost:8080/
开始服务