每个页面都需要调用的函数

2024-05-18 06:11:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在寻找一种方法来记录我的网站上的用户活动。 我有一个标准TG2快速启动项目。 我的模型中的“User”类有额外的列:

class User(DeclarativeBase):
...
    last_activity = Column(DateTime)
...

…我有一个功能:

^{pr2}$

我不知道这个地方在哪里。每次访问服务器的任何页面时都需要调用它。在RootController中,它只执行一次。在


Tags: 项目方法用户模型标准datetime网站记录
2条回答

要在控制器的每个方法之前和之后执行一些操作,可以在控制器类中定义_before和{}方法。在

如果需要在应用程序中的每个方法前后执行它们,可以在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”。在

相关问题 更多 >