2024-05-18 06:11:18 发布
网友
我正在寻找一种方法来记录我的网站上的用户活动。 我有一个标准TG2快速启动项目。 我的模型中的“User”类有额外的列:
class User(DeclarativeBase): ... last_activity = Column(DateTime) ...
…我有一个功能:
我不知道这个地方在哪里。每次访问服务器的任何页面时都需要调用它。在RootController中,它只执行一次。在
要在控制器的每个方法之前和之后执行一些操作,可以在控制器类中定义_before和{}方法。在
_before
如果需要在应用程序中的每个方法前后执行它们,可以在app_cfg.py内部调用base_config.register_hook('before_render' function)来注册应用程序范围的钩子。在
app_cfg.py
base_config.register_hook('before_render' function)
这是我用装饰器找到的解决方案。在
... from tg.decorators import before_call ... def updateactivity(*l, **kw): now = datetime.now() DBSession.query( User ).filter( User.user_name==request.environ['REMOTE_USER']).one().last_activity = datetime(now.year, now.month, now.day, now.hour, now.minute, now.second) ... class RootController(BaseController): ... @expose('myproject.templates.mytemplate') @require(predicates.not_anonymous) @before_call(updateactivity) def mymethod(self, **kw): ... return dict(page='mypage') ...
有没有办法把它用于整个控制器?喜欢使用 对于每个方法,控制器的“仅允许”而不是“@require”。在
要在控制器的每个方法之前和之后执行一些操作,可以在控制器类中定义}方法。在
_before
和{如果需要在应用程序中的每个方法前后执行它们,可以在
app_cfg.py
内部调用base_config.register_hook('before_render' function)
来注册应用程序范围的钩子。在这是我用装饰器找到的解决方案。在
有没有办法把它用于整个控制器?喜欢使用 对于每个方法,控制器的“仅允许”而不是“@require”。在
相关问题 更多 >
编程相关推荐