📅  最后修改于: 2020-10-19 03:31:58             🧑  作者: Mango
通常需要保留附加到用户浏览器的简单浏览数据。会话是最常用的技术。会话表示不需要以诸如磁盘文件或数据库之类的更持久形式存储的数据。
但是,TurboGears中的会话数据可以由文件系统,数据库或散列的cookie值支持。 Cookie中通常会保留少量会话数据,但是对于较大数量的会话数据,将使用MemCache。
MemCache是系统级的守护程序。它提供对缓存数据的快速访问,并且具有极高的可伸缩性。但是,它仅适用于安全服务器,因此必须由sysadmin进行维护和保护。
TurboGears使用Beaker进行会话管理。默认情况下,由变速箱快速启动的项目已配置为使用哈希Cookie来存储会话数据。
每次客户端连接时,会话中间件(Beaker)将使用已在配置文件中定义的cookie名称来检查cookie。如果找不到cookie,它将在浏览器中设置。在随后的所有访问中,中间件都将找到cookie并加以利用。
为了启用会话管理,应通过以下导入语句将会话类合并到项目中:
from tg import session
要将数据保存在会话变量中-
session[‘key’] = value
session.save()
检索会话变量-
return session[‘key’]
请注意,您需要显式保存会话,以便将密钥存储在该会话中。
会话对象的delete()方法将删除所有用户会话-
session.delete()
即使不习惯在任何给定的生产环境上删除所有用户会话,通常也要在进行可用性或功能测试后清除它。
下面给出的是一个简单的示例来演示会话。 RootController类具有setsession()方法,该方法设置会话变量。
from hello.lib.base import BaseController
from tg import expose, session
class RootController(BaseController):
@expose()
def setsession(self):
session['user'] = 'MVL'
session.save()
str = "sessionVariable set to "+session['user']
str = str+"
click here to retrieve"
return str
@expose()
def getsession(self):
return "value of session variable retrieved " +session['user'] +""
输入http:// localhost:8080 / setsession
浏览器中的链接指向http:// localhost:8080 / getsession ,该链接检索并显示会话变量-