记 django 单独实现统计的一种方式(即本地缓存的使用)

添加middleWare.py

import uuid
USER_KEY = 'uid'
TEN_YEARS = 60 * 60 * 24 * 365 * 10
UserIDMiddleWare:
    def __init__(self,get_response):
        self.get_response = get_response
				#把一个类变成一个可调用对象
    def __call__(self,request):
        uid = self.generate_uid(request)
        request.uid = uid
        response = self.get_response(request)
        response.set_cookie(USER_KEY,uid,max_age=TEN_YEARS,httponly=True)
        return  response

    def generate_uid(self,request):
        try:
            uid = request.COOKIES[USER_KEY]
        except KeyError :
            uid = uuid.uuid4().hex
        return uid

别忘记在setting里面添加

在views.py 使用

from django.core.cache import cache
from datetime import date
def detail(request):
       uid = request.uid
    uv_key = 'uv:%s:%s:%s' %(uid,str(date.today()),request.path)
    if not cache.get(uv_key):
        increase_uv = True
        cache.set(uv_key,1,24*60*60) #一天有效
    if increase_uv:
        #添加你需要的操作

评论