|
|
|
|
@ -1,19 +1,41 @@
|
|
|
|
|
# 导入日志模块,用于记录搜索相关日志
|
|
|
|
|
import logging
|
|
|
|
|
|
|
|
|
|
# 导入Django的表单模块,用于构建自定义表单
|
|
|
|
|
from django import forms
|
|
|
|
|
# 导入Haystack的搜索表单基类,用于扩展搜索功能
|
|
|
|
|
from haystack.forms import SearchForm
|
|
|
|
|
|
|
|
|
|
# 创建日志记录器,使用当前模块名作为日志器名称
|
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class BlogSearchForm(SearchForm):
|
|
|
|
|
"""
|
|
|
|
|
博客搜索表单类,继承自Haystack的SearchForm
|
|
|
|
|
用于自定义博客搜索的表单验证和搜索逻辑
|
|
|
|
|
"""
|
|
|
|
|
# 定义搜索查询字段,required=True表示该字段为必填项
|
|
|
|
|
# 用户输入的搜索关键词将通过该字段传递
|
|
|
|
|
querydata = forms.CharField(required=True)
|
|
|
|
|
|
|
|
|
|
def search(self):
|
|
|
|
|
"""
|
|
|
|
|
重写父类的search方法,实现自定义搜索逻辑
|
|
|
|
|
该方法会处理搜索请求并返回搜索结果
|
|
|
|
|
"""
|
|
|
|
|
# 调用父类的search方法,获取初始搜索结果集
|
|
|
|
|
# 父类方法会处理Haystack的核心搜索逻辑
|
|
|
|
|
datas = super(BlogSearchForm, self).search()
|
|
|
|
|
|
|
|
|
|
# 检查表单数据是否有效,若无效则返回无查询结果的默认响应
|
|
|
|
|
if not self.is_valid():
|
|
|
|
|
return self.no_query_found()
|
|
|
|
|
|
|
|
|
|
# 如果表单验证通过且存在查询数据(querydata)
|
|
|
|
|
if self.cleaned_data['querydata']:
|
|
|
|
|
# 记录搜索关键词到日志,方便后续分析用户搜索行为
|
|
|
|
|
logger.info(self.cleaned_data['querydata'])
|
|
|
|
|
return datas
|
|
|
|
|
|
|
|
|
|
# 返回处理后的搜索结果集
|
|
|
|
|
return datas
|