Django个人博客搭建教程---django-haystack搜索的应用与拓展

一、前言

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值