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

#!/usr/bin/env python
# -*- coding=utf-8 -*-
##################################
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=0,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 HttpResponse('123456')
#logger.error("level info test")
return render_to_response('app/pages/index.html', ret)

django-装饰器实现PV统计的更多相关文章

  1. django (装饰器,母版继承,自定义,request对象,response对象)

     1. 装饰器  1.    def wrapper(fn):    def inner(*args,**kwargs):     执行被装饰函数之前的操作     ret = fn(*args,** ...

  2. Python - Django - 装饰器版的登陆校验

    urls.py: from django.conf.urls import url from app01 import views urlpatterns = [ url(r'^login/', vi ...

  3. 详解Django中六个常用的自定义装饰器

    装饰器作用 decorator是当今最流行的设计模式之一,很多使用它的人并不知道它是一种设计模式.这种模式有什么特别之处? 有兴趣可以看看Python Wiki上例子,使用它可以很方便地修改对象行为, ...

  4. Django中六个常用的自定义装饰器

    装饰器作用 decorator是当今最流行的设计模式之一,很多使用它的人并不知道它是一种设计模式.这种模式有什么特别之处? 有兴趣可以看看Python Wiki上例子,使用它可以很方便地修改对象行为, ...

  5. python使用装饰器@函数式化django开发

    django是一个python web开发的框架.作为一个框架MVC的架构已经实现起来了.但是编码的时候你经常要进行进一步的抽象. AOP是一种称为面向切面的开发思想,意思是将部分功能代码在运行时动态 ...

  6. [原创]django+ldap实现单点登录(装饰器和缓存)

    前言 参考本系列之前的文章,我们已经搭建了ldap并且可以通过django来操作ldap了,剩下的就是下游系统的接入了,现在的应用场景,我是分了2个层次,第一层次是统一认证,保证各个系统通过ldap来 ...

  7. python django 自定义 装饰器

    # -*-coding:utf-8-*- __author__ = "GILANG (pleasurelong@foxmail.com)" """ d ...

  8. Django(五)母版继承、Cookie、视图装饰器等

    大纲 一.内容回顾 补充:默认值 补充:命名空间 二.模板语言 1.母版继承 2.include 3.自定义simple_tag 三.Cookie Cookie 使用总结 四.视图 1.获取用户请求相 ...

  9. 给django视图类添加装饰器

    要将login_required装饰到view class的dispatch方法上, 因为dispatch方法为类方法,不是单个的函数,所以需要将装饰函数的装饰器 login_required转化为装 ...

随机推荐

  1. MOOC网视频下载并视频倍速播放,超简单哒,亲测可用,( •̀ ω •́ )y

    由于视频在线播放太卡,想着下载看吧~~可是这个坑爹的网站没有下载按钮,难道就不可以下载视频了吗? 小白不甘心~ 于是动手查了一下,实验很成功,估计如果会爬虫的都不用像我一样一个一个自己去下了,奈何我知 ...

  2. LINUX获取文件信息

    body, table{font-family: 微软雅黑; font-size: 10pt} table{border-collapse: collapse; border: solid gray; ...

  3. Nginx Https配置不带www跳转www

    把 morethink.cn和www.morethink.cn合并到一个server上去,使用301永久重定向. 然后将 https://morethink.cn 转到 https://www.mor ...

  4. 二维数组int[3][2]在内存中的分布方式

  5. JAVA设计模式---命令模式

    1.定义: 将“请求”封装成对象,以便使用不同的请求.队列或者日志来参数化其他对象,命令模式也支持可撤销的操作.命令可以用来实现日志和事务系统. 2.实例: 1)需求:设计一个家电遥控器的API,遥控 ...

  6. JAVA 调用 R 语言之升华篇

    由于项目的需要,最近做了一个javaWeb调用R的组件,在这里,我把自己走的一些弯路给大家总结一下: 一.选取什么插件作为java和R之间的通信? 1. 在传统的方式中,大致可以分为两类:一类是JRI ...

  7. 网络搬砖是件苦力活 CMS推荐GHOS博客程序

    搬砖不是技术活,而是苦力(bi)活,富有技术含量的苦力活说不定就是一门可以持续的生意. 我们不生产内容,我们只是互联网的内容搬运工,这是大部分不具备原创能力个人站长的心声.虽然原创能力不够,但是服务目 ...

  8. 不要用for循环去遍历LinkedList

    ArrayList与LinkedList的普通for循环遍历 对于大部分Java程序员朋友们来说,可能平时使用得最多的List就是ArrayList,对于ArrayList的遍历,一般用如下写法: p ...

  9. 洛谷 [P2761] 软件补丁问题

    并不是网络流 状压+SPFA 通过题目中的描述及数据范围可知,我们状压当前的漏洞,以每个二进制位表示是否有这个漏洞,并以状压的结果为顶点,以补丁的时间为边跑SPFA即可 #include <io ...

  10. 洛谷 [P1119] 灾后重建

    我们发现每次询问都是对于任意两点的,所以这是一道多源最短路径的题,多源最短路径,我们首先想到floyd,因为询问的时间是不降的,所以对于每次询问,我们将还没有进行松弛操作的的点k操作. #includ ...