我的博客加入搜索功能后,我一直希望能够通过一种比较有趣的方式来展示搜索关键词,想了一下,感觉词云图是非常合适的一种方式,于是动手实现了,这里通过2篇博文来记录实现过程。
效果图:

分析:因为我是使用的 Django Haystack + jieba 实现站内全文检索与关键词高亮,Haystack是一个第三插件,如何获取用户搜索的时候提交的关键词就是一个难题,为了解决这个问题,我决定自定义一个中间件,来获取关键词。
步骤:
1.在项目下新建一个py文件,如:utlis/searchMiddleware.py
searchMiddleware.py 里:
from django.utils.deprecation import MiddlewareMixin #引入中间件
class MysearchMiddelware(MiddlewareMixin):
def process_request(self,request): #中间件可以定义五个方法,(主要的是process_request和process_response)
path = request.path #获取url
if path == '/search/': #比较url 如果成立,表明是搜索
data = request.GET.get('q') #获取搜索关键词
if data: #写入
with open('word.txt', 'a+', encoding='utf-8') as f:
f.write(data)
else:
pass
2.settings.py 注册这个中间件
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'utlis.searchMiddleware.MysearchMiddelware',
]
3.启动项目 测试,发现目录下有生成word.txt ,里面也有关键词。
下一篇 实现词云图生成!
注:中间件 https://www.cnblogs.com/sui776265233/p/9664642.html 讲得很详细。
登陆后方可评论