diff --git a/DjangoBlog/settings.py b/DjangoBlog/settings.py index 8975987..ac6df0b 100644 --- a/DjangoBlog/settings.py +++ b/DjangoBlog/settings.py @@ -58,6 +58,7 @@ MIDDLEWARE_CLASSES = [ 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', 'django.middleware.http.ConditionalGetMiddleware', + 'blog.middleware.OnlineMiddleware' ] ROOT_URLCONF = 'DjangoBlog.urls' diff --git a/blog/middleware.py b/blog/middleware.py new file mode 100644 index 0000000..dccc53d --- /dev/null +++ b/blog/middleware.py @@ -0,0 +1,50 @@ +#!/usr/bin/env python +# encoding: utf-8 + + +""" +@version: ?? +@author: liangliangyy +@license: MIT Licence +@contact: liangliangyy@gmail.com +@site: https://www.lylinux.org/ +@software: PyCharm +@file: middleware.py +@time: 2017/1/19 上午12:36 +""" + +import time +from ipware.ip import get_real_ip +from django.core.cache import cache + + +class OnlineMiddleware(object): + def process_request(self, request): + self.start_time = time.time() + + def process_view(self, request, view_func, view_args, view_kwargs): + """ + 处理当前在线人数 + """ + http_user_agent = request.META.get('HTTP_USER_AGENT', []) + if 'Spider' in http_user_agent or 'spider' in http_user_agent: + return + + online_ips = cache.get("online_ips", []) + + if online_ips: + online_ips = cache.get_many(online_ips).keys() + + ip = get_real_ip(request) + + cache.set(ip, 0, 5 * 60) + + if ip not in online_ips: + online_ips.append(ip) + + cache.set("online_ips", online_ips) + + def process_response(self, request, response): + cast_time = time.time() - self.start_time + response.content = response.content.replace(b'', str.encode(str(cast_time)[:5])) + return response diff --git a/requirements.txt b/requirements.txt index 6905087..64266d6 100644 --- a/requirements.txt +++ b/requirements.txt @@ -13,4 +13,5 @@ requests Unidecode Whoosh mistune -pygments \ No newline at end of file +pygments +django-ipware \ No newline at end of file diff --git a/templates/share_layout/footer.html b/templates/share_layout/footer.html index 6871e72..4196155 100644 --- a/templates/share_layout/footer.html +++ b/templates/share_layout/footer.html @@ -22,7 +22,8 @@ Django  |  LiangLiangyy - + | + 本页面加载耗时:s