Python 金字塔获取当前用户/用户id而不访问请求
是否有任何方法可以访问当前用户对象或至少id而不访问请求?比如说在模型中 我使用金字塔和炼金术 首先我想到了Singleton,但我认为当有更多用户时,它可能返回错误的对象Python 金字塔获取当前用户/用户id而不访问请求,python,sqlalchemy,pyramid,Python,Sqlalchemy,Pyramid,是否有任何方法可以访问当前用户对象或至少id而不访问请求?比如说在模型中 我使用金字塔和炼金术 首先我想到了Singleton,但我认为当有更多用户时,它可能返回错误的对象 class UserSingleton(object): user = None def __new__(cls, user=None): UserSingleton.user = user return UserSingleton.user @classmetho
class UserSingleton(object):
user = None
def __new__(cls, user=None):
UserSingleton.user = user
return UserSingleton.user
@classmethod
def get(cls):
return cls.user
我需要将其用于我的模型,但我无法在此处传递请求,因为这是由orm事件调用的:
@classmethod
def log(cls, description, log_type=None, name=None):
user = ??
audit_log = cls(
user_id=user.id if user else None,
description=description,
type=log_type,
name=name
)
DBSession.add(audit_log)
return audit_log
好的,通过执行以下操作找到解决方案:
from pyramid.threadlocal import get_current_request
request = get_current_request()
我认为数据库事件中没有当前用户,因为它们发生在请求的上下文之外。最佳做法是在函数中显式传递
请求
或用户
,而不是依赖线程局部变量。