From 4ca514b8421faedf50ee26a5a45d52f5cccb6ef9 Mon Sep 17 00:00:00 2001 From: liangliang Date: Sun, 9 May 2021 08:47:16 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0ip=E5=9C=B0=E5=9D=80=E8=AE=B0?= =?UTF-8?q?=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DjangoBlog/elasticsearch_backend.py | 10 +++++----- blog/documents.py | 5 +++-- blog/middleware.py | 6 ++++-- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/DjangoBlog/elasticsearch_backend.py b/DjangoBlog/elasticsearch_backend.py index 4728ad8..fa23e0f 100644 --- a/DjangoBlog/elasticsearch_backend.py +++ b/DjangoBlog/elasticsearch_backend.py @@ -41,7 +41,7 @@ class ElasticSearchBackend(BaseSearchBackend): # pass def _get_models(self, iterable): - models = iterable if iterable else Article.objects.all() + models = iterable if iterable and iterable[0] else Article.objects.all() docs = self.manager.convert_to_doc(models) return docs @@ -83,10 +83,10 @@ class ElasticSearchBackend(BaseSearchBackend): 'match', title=query_string)], minimum_should_match="70%") search = ArticleDocument.search() \ - .query('bool', filter=[q]) \ - .filter('term', status='p') \ - .filter('term', type='a') \ - .source(False)[start_offset: end_offset] + .query('bool', filter=[q]) \ + .filter('term', status='p') \ + .filter('term', type='a') \ + .source(False)[start_offset: end_offset] results = search.execute() hits = results['hits'].total diff --git a/blog/documents.py b/blog/documents.py index fa382d5..9fb15b6 100644 --- a/blog/documents.py +++ b/blog/documents.py @@ -30,6 +30,7 @@ class ElapsedTimeDocument(Document): log_datetime = Date() type = Text(analyzer='ik_max_word') useragent = Text() + ip = Text() class Index: name = 'performance' @@ -45,7 +46,7 @@ class ElapsedTimeDocument(Document): class ElaspedTimeDocumentManager(): @staticmethod - def create(url, time_taken, log_datetime, type, useragent): + def create(url, time_taken, log_datetime, type, useragent, ip): # if not hasattr(ElaspedTimeDocumentManager, 'mapping_created'): # ElapsedTimeDocument.init() # setattr(ElaspedTimeDocumentManager, 'mapping_created', True) @@ -59,7 +60,7 @@ class ElaspedTimeDocumentManager(): time_taken=time_taken, log_datetime=log_datetime, type=type, - useragent=useragent) + useragent=useragent, ip=ip) doc.save() diff --git a/blog/middleware.py b/blog/middleware.py index 62af932..5b7b4a7 100644 --- a/blog/middleware.py +++ b/blog/middleware.py @@ -15,6 +15,7 @@ import time import logging +from ipware import get_client_ip from blog.documents import ELASTICSEARCH_ENABLED, ElaspedTimeDocumentManager logger = logging.getLogger(__name__) @@ -30,7 +31,7 @@ class OnlineMiddleware(object): start_time = time.time() response = self.get_response(request) http_user_agent = request.META.get('HTTP_USER_AGENT', '') - + ip = get_client_ip(request) if 'spider'.upper() not in http_user_agent.upper(): try: cast_time = time.time() - start_time @@ -44,7 +45,8 @@ class OnlineMiddleware(object): time_taken=time_taken, log_datetime=timezone.now(), type='blog', - useragent=http_user_agent) + useragent=http_user_agent, + ip=ip) response.content = response.content.replace( b'', str.encode(str(cast_time)[:5])) except Exception as e: