User number statistics

demand:

Record number of users access when the user first visits, visits plus 1 (ip redis determine if the library does not get to the client from the access number plus 1, redis client ip address stored in the library and set an expiration time, otherwise without)


# 导包
from django.db.models import Q,F

# 建立redis连接
import redis
r = redis.Redis('localhost')

# 个人主页接口
class GetUser(APIView):
    def get(self,request):
        # 获取客户端ip
        if 'HTTP_X_FORWARDED_FOR' in request.META:
            ip = request.META.get('HTTP_X_FORWARDED_FOR')
        else:
            ip = request.META.get('REMOTE_ADDR')
        # 获取用户id
        uid = request.GET.get('uid', '')
        # 设置防刷逻辑
        if r.get(ip) == None:
            # 将用户访问数累加
            User.objects.filter(Q(id=int(uid))).update(num=F('num') + 1)
            # 将用户ip存入到redis
            r.set(ip, ip)
            # 设置过期时间, 单位是秒
            r.expire(ip, 60)
        else:
            pass

        # 查询用户
        user = User.objects.filter(Q(id=int(uid))).first()

        # 序列化操作
        user_ser = UserSer(user)
        return Response(user_ser.data)
Published 84 original articles · won praise 1 · views 2100

Guess you like

Origin blog.csdn.net/lxp_mocheng/article/details/103469805
Recommended