后端功能实现

文件,类,字段,命名不要改动,

在apps/news/search_indexes.py中创建如下类:(名称固定为search_indexes.py)

# -*-# -*- coding: utf-8 -*-
# 斌彬电脑
# @Time : 2018/10/12 0012 8:47 from haystack import indexes
# from haystack import site
from .models import News class NewsIndex(indexes.SearchIndex, indexes.Indexable):
"""
News索引数据模型 类
"""
text = indexes.CharField(document=True, use_template=True)
id = indexes.IntegerField(model_attr='id')
title = indexes.CharField(model_attr='title')
digest = indexes.CharField(model_attr='digest')
content = indexes.CharField(model_attr='content')
image_url = indexes.CharField(model_attr='image_url')
# comments = indexes.IntegerField(model_attr='comments') def get_model(self):
"""
返回建立索引的模型类
"""
return News def index_queryset(self, using=None):
"""
返回要建立索引的数据查询集
:param using:
:return:
"""
# 条件:把未被逻辑删除的,进行搜索
return self.get_model().objects.filter(is_delete=False, tag_id=1)
# return self.get_model().objects.filter(is_delete=False, tag_id__in=[1, 2, 3, 4, 5, 6])

  

后台视图

from haystack.views import SearchView as _SearchView

class SearchView(_SearchView):
# 模版文件
template = 'news/search.html' # 重写响应方式,如果请求参数q为空,返回模型News的热门新闻数据,否则根据参数q搜索相关数据
def create_response(self):
kw = self.request.GET.get('q', '')
if not kw:
show_all = True
hot_news = models.HotNews.objects.select_related('news'). \
only('news__title', 'news__image_url', 'news__id'). \
filter(is_delete=False).order_by('priority', '-news__clicks') paginator = Paginator(hot_news, settings.HAYSTACK_SEARCH_RESULTS_PER_PAGE)
try:
page = paginator.page(int(self.request.GET.get('page', 1)))
except PageNotAnInteger:
# 如果参数page的数据类型不是整型,则返回第一页数据
page = paginator.page(1)
except EmptyPage:
# 用户访问的页数大于实际页数,则返回最后一页的数据
page = paginator.page(paginator.num_pages)
return render(self.request, self.template, locals())
else:
show_all = False
qs = super(SearchView, self).create_response()
return qs

  

在apps/news/urls.py中

urlpatterns = [
path('search/', views.SearchView(), name='search'),

]

创建templates/search/indexes/news/news_text.txt文件(文件名为:应用名_text.txt)

{{ object.title }}
{{ object.digest }}
{{ object.content }}

templates/search/indexes,为固定路径,不可更改,

/news/news_text.txt 与应用名,模型名相关,

把要搜索的字段,填入该文件中,

手动创建 索引表:

进入虚拟环境:

workon mayun

进入到项目:

cd myblog/
(mayun) binbin@abc:~/myblog/myblog$ ls
a apps db.sqlite3 __init__.py logs manage.py media myblog MyBlog_Static templates utils

重建索引: python manage.py rebuild_index

执行命令:

python manage.py haystack_info

会帮我们创建索引表:

Number of handled 1 index(es).
- Model: News by Index: <apps.news.search_indexes.NewsIndex object at 0x7f8b99c5fb88>

手动更新: python manage.py update_index

潭州课堂25班:Ph201805201 django 项目 第二十八课 新闻elasticsearch搜索前后功台能实现 (课堂笔记)的更多相关文章

  1. 潭州课堂25班:Ph201805201 django 项目 第二十九课 docker实例,文件下载前后台实现 (课堂笔记)

    docker 实例 :wq!保存退出 放入一个 html 文件 权限不够,加 sudo 查看本地仓库的 image 运行 docker -- name,后跟个运行名, -p 物理机端口映射到容器端口, ...

  2. 潭州课堂25班:Ph201805201 django 项目 第二十六课 docker简介 (课堂笔记)

    官方文档: https://docs.docker.com/install/linux/docker-ce/ubuntu/#set-up-the-repository 1,更新下sudo apt-ge ...

  3. 潭州课堂25班:Ph201805201 django 项目 第二十五课 文章多级评论前后台实现 (课堂笔记)

    添加新闻评论功能 1.分析 业务处理流程: 判断前端传的新闻id是否为空,是否为整数.是否不存在 判断评论的内容是否为空 判断是否有父评论,父评论的id是否与新闻id匹配 判断用户是否登录 保存新闻评 ...

  4. 潭州课堂25班:Ph201805201 django 项目 第二十四课 文章主页 多级评论数据库设计 ,后台代码完成 (课堂笔记)

    加载新闻评论功能 1.分析 业务处理流程: 判断前端传的新闻id是否为空,是否为整数.是否不存在 请求方法:GET url定义:'/news/<int:news_id>' 请求参数:url ...

  5. 潭州课堂25班:Ph201805201 django 项目 第二十二课 文章主页 新闻列表页面滚动加载,轮播图后台实现 (课堂笔记)

    新建static/js/news/index.js文件 ,主要用于向后台发送请求, // 新建static/js/news/index.js文件 $(function () { // 新闻列表功能 l ...

  6. 潭州课堂25班:Ph201805201 django 项目 第十八课 前台 注解 (课堂笔记)

    在静态文件 js/user上当下,的 auth.js 文件中 $(function () { let $username = $('#user_name'); // 选择id为user_name的网页 ...

  7. 潭州课堂25班:Ph201805201 django 项目 第十五课 用户注册功能后台实现 (课堂笔记)

    前台:判断用户输入 ,确认密码,手机号, 一切通过后向后台发送请求, 请求方式:post 在 suers 应用下的视图中: 1,创建个类, 2,创建 GET 方法,宣言页面 3,创建  POST 方法 ...

  8. 潭州课堂25班:Ph201805201 django 项目 第二十课 数据库分析设计图 (课堂笔记)

    https://www.dbdesigner.net/

  9. 潭州课堂25班:Ph201805201 django 项目 第十九课 文章主页数据库模型,前后台功能实现 (课堂笔记)

    -数据库模型设计 : 文章:新闻表: 字段:图片,标题,摘要,类型,作者,创建时间 标签表 评论表, 轮播图:外键,指向文章的外键表 在 utls 目录下创建 models.py  把其它模型常用的字 ...

随机推荐

  1. Jmeter 自动化测试报告扩展

    首先了解下生成测试报告的过程,我们看到的测试报告是由.jtl格式转换为.html,html报告的样式由extras目录下xsl文件决定.优化测试报告需要分为两部分内容,首先我们要优化输出的测试内容,其 ...

  2. AI-响应式、分页器

    响应式 如果在setting配置下列,当只有BrowsableAPIRenderer时,只会返回浏览器页面:当配置成JSONRenderer,会返回json数据 REST_FRAMEWORK={ 'D ...

  3. ORA-27157 ORA-27300 ORA-27301

    目录: 问题现象 原因分析 解决方案 问题现象: 收到同事反馈,数据库无法连接.于是登录服务器发现,数据库莫名挂掉.实例crash,日志中记录截取一段如下: Errors in file /u01/a ...

  4. ORA-12705

    1. 分析 ORA-12705是一个与nls 环境或者文件相关的错误,按照Oracle 官方的提示,要么是环境变量配置错误,要么是通过alter session 命令调整了错误的nls参数值,要么是n ...

  5. JavaBean toString() - 将bean对象打印成字符串

    JavaBean toString方式 https://www.cnblogs.com/thiaoqueen/p/7086195.html //方法一:自动生成 @Override public St ...

  6. SpringBoot学习(3)-SpringBoot添加支持CORS跨域访问

    SpringBoot学习(3)-SpringBoot添加支持CORS跨域访问 https://blog.csdn.net/yft_android/article/details/80307672

  7. java发送http的get、post请求【备忘】

    类 package com.dsideal.kq.Controller; import java.io.BufferedReader; import java.io.IOException; impo ...

  8. cactiEZ 配置

    CactiEZ 中文版是简单有效的cacti中文解决方案,它基于centos6 整合了cacti的相关软件,重新编译的一个新的操作系统 它基于centos6,启动速度快,支持EXT4文件系统,全中文页 ...

  9. 关于mac远程链接window服务器以及实现共享文件

    要最近换了新电脑mac 虽然运行速度666  但是真的很多地方都使用不习惯 这里记录一下 关于 远程链接window主机的问题 方便以后用 首先是 链接: 在应用里 找到    然后类似于  wind ...

  10. BZOJ2287 【POJ Challenge】消失之物 动态规划 分治

    原文链接http://www.cnblogs.com/zhouzhendong/p/8684027.html 题目传送门 - BZOJ2287 题意 有$n$个物品,第$i$个物品的体积为$w_i$. ...