python:在cgi脚本中与会话交互
python cgi脚本能否向会话写入和读取数据?如果是,怎么做?有高级API吗,或者我必须自己运行类吗?cgi上没有“会话”。如果使用的是原始python:在cgi脚本中与会话交互,python,session,cgi,Python,Session,Cgi,python cgi脚本能否向会话写入和读取数据?如果是,怎么做?有高级API吗,或者我必须自己运行类吗?cgi上没有“会话”。如果使用的是原始cgi,则必须滚动自己的会话处理代码 基本上,会话的工作方式是创建一个唯一的cookie编号,并在响应头上将其发送给客户端,然后在每个连接上检查此cookie。将会话数据存储在服务器上的某个位置(内存、数据库、磁盘),并使用cookie号作为密钥,在客户端发出的每个请求中检索会话数据 然而,cgi不是用python开发web应用程序的方式。使用。使用we
cgi
,则必须滚动自己的会话处理代码
基本上,会话的工作方式是创建一个唯一的cookie编号,并在响应头上将其发送给客户端,然后在每个连接上检查此cookie。将会话数据存储在服务器上的某个位置(内存、数据库、磁盘),并使用cookie号作为密钥,在客户端发出的每个请求中检索会话数据
然而,cgi
不是用python开发web应用程序的方式。使用。使用web框架
下面是一个使用的快速示例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)
import cherrypy
类HelloSessionWorld(对象):
@cherrypy.tools.sessions()
def索引(自):
如果cherrypy.session中有“数据”:
return“您有一个cookie!上面写着:%r”%cherrypy.session['data']
其他:
return“您没有饼干…”
index.exposed=True
@cherrypy.tools.sessions()
def getcookie(self):
cherrypy.session['data']='Hello World'
返回“完成,请查看”
getcookie.exposed=True
application=cherrypy.tree.mount(HelloSessionWorld(),“/”)
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
cherrypy.quickstart(应用程序)
请注意,此代码是一个
wsgi
应用程序,您可以将其发布到任何启用wsgi
的web服务器(apache已发布)。此外,cherrypy有自己的wsgi
服务器,因此您可以使用python运行代码,它将开始在我的“低成本”web托管计划中服务,不允许使用wsgi。“mod_wsgi”apache模块无法使用,因为它是共享apache服务器。我正在发展我自己的班级
为了不从零开始,我正在试验一个会话类的实现,该类在这个站点上可用:+1 for WSGI。。。当然,在此期间,您可以通过CGI部署WSGI。事实上,这可能是一个好主意,因为单进程一次运行方案意味着您不必担心dev服务器上的模块重新加载问题。