python-pv-uv

1.models层建立统计表

# 每日访问量统计
class Statistics(models.Model):
    pv = models.IntegerField(default=0)
    uv = models.IntegerField(default=0)
    date = models.CharField(max_length=200)
    class Meta:
        verbose_name = '网站统计信息'
        verbose_name_plural = '网站统计信息'
    def__unicode__(self):
        return self.date

2.decorator.py建立装饰器函数

实现每次调用view试图函数前数据库字段先自加1

from models import Statistics
import time
def pvCount(func):
    def wrapper(request, *args, **kwargs):
        dateObj_list = Statistics.objects.filter(date=time.strftime('%Y-%m-%d'))
        count = dateObj_list.count()
        if count == 0:
            Statistics.objects.create(pv=1,uv=1,date=str(time.strftime('%Y-%m-%d')))
        else:
            todayObj = Statistics.objects.get(date=str(time.strftime('%Y-%m-%d')))
            todayObj.pv += 1
            todayObj.save()
        return func(request, *args, **kwargs)
    return wrapper

3.view试图导入装饰器函数,并调用

from decorator import pvCount
@pvCount
def index(request):
    count = models.NewMachine.objects.all().count()
    phycount = models.PhysicalHost.objects.all().count()
    ret = dict()
    ret['count'] = count
    ret['phycount'] = phycount
    return render_to_response('index.html', ret)

1.models层建立统计表

# 每日访问量统计
class Statistics(models.Model):
    pv = models.IntegerField(default=0)
    uv = models.IntegerField(default=0)
    date = models.CharField(max_length=200)
    class Meta:
        verbose_name = '网站统计信息'
        verbose_name_plural = '网站统计信息'
    def__unicode__(self):
        return self.date

2.decorator.py建立装饰器函数

实现每次调用view试图函数前数据库字段先自加1

from models import Statistics
import time
def pvCount(func):
    def wrapper(request, *args, **kwargs):
        dateObj_list = Statistics.objects.filter(date=time.strftime('%Y-%m-%d'))
        count = dateObj_list.count()
        if count == 0:
            Statistics.objects.create(pv=1,uv=1,date=str(time.strftime('%Y-%m-%d')))
        else:
            todayObj = Statistics.objects.get(date=str(time.strftime('%Y-%m-%d')))
            todayObj.pv += 1
            todayObj.save()
        return func(request, *args, **kwargs)
    return wrapper

3.view试图导入装饰器函数,并调用

from decorator import pvCount
@pvCount
def index(request):
    count = models.NewMachine.objects.all().count()
    phycount = models.PhysicalHost.objects.all().count()
    ret = dict()
    ret['count'] = count
    ret['phycount'] = phycount
    return render_to_response('index.html', ret)

猜你喜欢

转载自www.cnblogs.com/52-qq/p/8919934.html