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