利用python的装饰函数添加blog的log功能
Wednesday, May 27 21:36, 2009
3 comments/478 hits
早就计划着要做log功能,但是最近琐事缠身,所以一直没有做,明天端午节放假,今晚无事,于是就把这个功能实现了,其实也很简单,利用了python的装饰函数的话更简单了。
首先在新的文件log.py中创建一个函数:
使用的方法也很简单,在需要加上技术功能的函数前加上标注该装饰函数即可,例如:

首先在新的文件log.py中创建一个函数:
def counter(handler_method):该装饰函数实现的功能也非常简单:在数据库中有一个表为Counter,其中只包含一条数据,这条数据只包含一个字段count,代表本blog某些页面被访问的次数总和。设计的这么简单是为了提高效率(感觉上字段越少速度越快,不知道是不是真的)。每次访问的时候,如果不是admin的话,那么就让记录加一。
def wrapper(self, *args, **kwargs):
counter = Counter.all().get()
if counter is None:
counter = Counter()
counter.put()
if not users.is_current_user_admin():
counter.count += 1
counter.put()
return handler_method(self, *args, **kwargs)
return wrapper
使用的方法也很简单,在需要加上技术功能的函数前加上标注该装饰函数即可,例如:
class MainPage(BaseRequestHandler):那么就给主页添加了计数功能,另外我给单篇文章文章展示和主页的paginator部分加上了计数,其他部分,比如category,tag,archieve等,我觉得没有必要就没有加。 另外还用装饰函数实现了记录visitor的功能,还有用普通方法实现了文章hit计数,呵呵,这个更简单了。 P.S visitor记录了USER_EMAIL(if login), REMOTE_ADDR, HTTP_USER_AGENT, HTTP_REFERER, URL.
@log.counter
def get(self):

Recent Comments