python cgi 脚本可以向会话写入和读取数据吗?如果是这样怎么办?是否有高级 API 或者我必须推出自己的类?
没有“session" on cgi
。如果您使用的是原始会话,则必须滚动自己的会话处理代码cgi
.
基本上,会话的工作原理是创建一个唯一的 cookie 编号并将其通过响应标头发送给客户端,然后在每个连接上检查此 cookie。将会话数据存储在服务器上的某个位置(内存、数据库、磁盘),并使用 cookie 编号作为密钥在客户端发出的每个请求时检索它。
However cgi
这不是用 Python 开发 Web 应用程序的方式。使用wsgi http://wsgi.org/。使用网络框架。
这是一个使用的快速示例cherrypy http://cherrypy.org/. cherrypy.tools.sessions
是一个cherrypy工具,可以自动处理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 http://code.google.com/p/modwsgi)。另外,cherrypy也有自己的wsgi
服务器,因此您只需使用 python 运行代码即可开始服务http://localhost:8080/ http://localhost:8080/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)