使用缓存时计算“页面浏览量”或“点击量”

2024-05-28

我有一个叫做show_board。在其中,除其他外,我增加了一个字段Board.views每次运行时加 1,以计算页面浏览量。

问题是当我在该视图上使用 @cache_page 装饰器时,Board.views仅在每次生成新的缓存视图时才会增加,而不是每次请求该视图时都会增加,就像我想要的那样。

我怎样才能做到这一点?


实际上,您可以编写另一个装饰器来实现此目的。

def view_incrementer(view_func):
    """A decorator which increments board views"""

    def _wrapped(*args, **kwargs):
        # here you can increment Board.views
        # kwargs will contain URL parameters
        pk = kwargs.get('pk')
        Board.objects.filter(pk=pk).update(views=F('views')+1)
        return view_func(*args, **kwargs)

    return _wrapped

然后将装饰器应用到您的视图函数/方法中:

@view_incrememter
@cache_page(timeout=60)
def show_board(request, pk):
    ...

或者你可以直接在你的 urls.py 中使用它

url(r'^some-path/(?P<pk>\d+)/$', view_incrementer(cache_page(60)(show_board))),
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用缓存时计算“页面浏览量”或“点击量” 的相关文章

随机推荐