python:在cgi脚本中与会话交互

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/开始服务

上一篇:php – Python:CGI程序想知道调用网页的IP地址


下一篇:为什么PHP(脚本)比CGI(编译)提供更多请求?