我在web2py应用程序中工作,我需要访问模块中的当前用户,因此是否有可能访问web2py模块中的当前用户,是,那么我该如何访问它?
由于
答案 0 :(得分:1)
一种选择是使用本地线程current
object。假设您使用auth
对象的标准名称Auth
,在模块中,您可以执行以下操作:
from gluon import current
def myfunction():
user = current.globalenv['auth'].user
您还可以在模型文件中将用户对象显式添加为current
的属性:
from gluon import current
current.auth_user = auth.user
然后在模块中,您可以访问current.auth_user
。
如前所述here,您不应将current
对象的属性分配给模块中的顶级变量或类属性(这是因为current
对象是每个线程的本地对象,但这样的分配只会在首次导入模块时发生一次。)
另一种选择只是将auth
对象传递给模块中的函数或类。例如,在模块中:
def myfunction(auth):
user = auth.user