一、前言
django-haystack的的使用看我之前的一篇文章
https://blog.csdn.net/ssjdoudou/article/details/89484374
但是如果想在返回的搜索页面添加其他内容怎么处理呢?
两种办法
第一、修改源码
第二、重加载扩展函数
二、修改源码
from JiaBlog.models import Articles,Tag,Category,Version,Jia
def get_context(self):
(paginator, page) = self.build_page()
blog_list_greats = Articles.objects.filter(status="有效").order_by('-greats')[0:10]
blog_list_comments = Articles.objects.filter(status="有效").order_by("-comments")[0:10]
tags = Tag.objects.all()
# categorys = Category.objects.all()
jia = Jia.objects.get(id=1)
try:
version = Version.objects.filter(version_time=datetime.datetime.now().strftime('%Y-%m-%d')).values(
'version_content')
versions = [item[key] for item in version for key in item][0].split(";")
except IndexError as err:
version = Version.objects.order_by('-version_time')[0:1].values('version_content')
#all()[0:1].values('version_content')
versions = [item[key] for item in version for key in item][0].split(";")
context = {
'query': self.query,
'form': self.form,
'page': page,
'paginator': paginator,
'suggestion': None,
'blog_list_greats':blog_list_greats,
'blog_list_comments':blog_list_comments,
'tags':tags,
# 'categorys':categorys,
'versions': versions,
'placeh':self.query,
'jia':jia,
}
if hasattr(self.results, 'query') and self.results.query.backend.include_spelling:
context['suggestion'] = self.form.get_suggestion()
context.update(self.extra_context())
return context
找到haystack包的路径,修改views.py
里面的
class SearchView(object)
的
def get_context(self):
三、重加载拓展函数
在你的views.py函数里
class MySeachView(SearchView):
# 重载extra_context来添加额外的context内容
def extra_context(self):
context = super(MySeachView,self).extra_context()
categorys = Category.objects.all()
blog_list_greats = Articles.objects.filter(status="有效").order_by('-greats')[0:10]
blog_list_comments = Articles.objects.filter(status="有效").order_by("-comments")[0:10]
tags = Tag.objects.all()
jia = Jia.objects.get(id=1)
try:
version = Version.objects.filter(version_time=datetime.datetime.now().strftime('%Y-%m-%d')).values(
'version_content')
versions = [item[key] for item in version for key in item][0].split(";")
except IndexError as err:
version = Version.objects.order_by('-version_time')[0:1].values('version_content')
#all()[0:1].values('version_content')
versions = [item[key] for item in version for key in item][0].split(";")
context['categorys'] = categorys
context['blog_list_greats'] = blog_list_greats
context['blog_list_comments'] = blog_list_comments
context['tags'] = tags
context['versions'] = versions
context['jia'] = jia
return context
然后把项目的urls.py修改search的链接
# url(r'^search/', include('haystack.urls')), # old way
url(r'^search/', views.MySeachView(), name='haystack_search'), # new way
上面一个是修改源码的对应url
下面一个是重加载拓展函数的url