在http://docs.cherrypy.org/en/latest/tutorials.html#id7中,有tut05.py:
import random
import string
import cherrypy
class StringGenerator(object):
@cherrypy.expose
def index(self):
return """<html>
<head></head>
<body>
<form method="get" action="generate">
<input type="text" value="8" name="length" />
<button type="submit">Give it now!</button>
</form>
</body>
</html>"""
@cherrypy.expose
def generate(self, length=8):
some_string = ''.join(random.sample(string.hexdigits, int(length)))
cherrypy.session['mystring'] = some_string #(A)
return some_string
@cherrypy.expose
def display(self):
return cherrypy.session['mystring'] #(B) QUESTION HERE
if __name__ == '__main__':
conf = {
'/': {
'tools.sessions.on': True
}
}
cherrypy.quickstart(StringGenerator(), '/', conf)
我试过这个程序。当我使用两个浏览器会话(将它们设想为来自不同计算机的两个客户端)访问URL时,服务器可以区分这两个客户端。这是如何实现的?
从功能体:
@cherrypy.expose
def display(self):
return cherrypy.session['mystring'] #(B) QUESTION HERE
看起来self
不是引用,所以我认为cherrypy.session
是两个客户端的相同的对象。真的一样吗?或者我错在哪里。