zoukankan      html  css  js  c++  java
  • Django

    1、创建新的虚拟环境

    virtualenv lcv_search

    2、在虚拟环境中用豆瓣源安装Django

    pip install https://pypi.douban.com/simple/  django

    3、用PyCharm创新Django项目

    4、创建好后目录如下

    5、运行Lcs_search项目,进入:http://127.0.0.1:8000/  显示如下

    6、在Lcs_search文件夹的urls.py文件中配置首页url

    from django.conf.urls import url
    from django.contrib import admin
    from django.views.generic import TemplateView
    urlpatterns = [
        url(r'^admin/', admin.site.urls),
        url(r'^$', TemplateView.as_view(template_name="index.html"), name="index"), #index.html为前端文件,name自定义取
    ]

    7、在Lcs_search文件夹的settings.py文件中倒入样式文件夹

    #在settings.py文件最后添加
    STATICFILES_DIRS = [
        os.path.join(BASE_DIR, 'Front') #BASE_DIR是原settings.py文件中的路径变量os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
    ]

    8、修改.html文件中的css和js引用的路径

    {% load staticfiles%} #Django固定写法
    <link href="{% static 'css/style.css'%}" rel="stylesheet" type="text/css" />
    <link href="{% static 'css/index.css'%}" rel="stylesheet" type="text/css" />
    <script type="text/javascript" src="{% static 'js/jquery.js'%}"></script>
    <script type="text/javascript" src="{% static 'js/global.js'%}"></script> 

    #{% static 'js/jquery.js'%}中的static为settings.py文件的变量:STATIC_URL = '/static/' ,
    {% static 'js/jquery.js'%}也可以这样写'/static/js/jquery.js'
    
    

    9、修改完成后显示正确了

     10、在urls.py中添加搜索提示连接

    from django.conf.urls import url
    from django.contrib import admin
    from django.views.generic import TemplateView
    from search.views import SearchSuggest
    urlpatterns = [
        url(r'^admin/', admin.site.urls),
        url(r'^$', TemplateView.as_view(template_name="index.html"), name="index"),
        url(r'^suggest/$', SearchSuggest.as_view(), name="suggest"),#自动补全链接接口
    ]

    11、在Lsv_search下的search的models.py文件中加入代码(在虚拟环境内安装elasticsearch-dsl)

    from elasticsearch_dsl import DocType, Date, Nested, Boolean, 
        analyzer, InnerObjectWrapper, Completion, Keyword, Text, Integer
    
    from elasticsearch_dsl.analysis import CustomAnalyzer as _CustomAnalyzer
    
    from elasticsearch_dsl.connections import connections
    connections.create_connection(hosts=["localhost"])
    
    class CustomAnalyzer(_CustomAnalyzer):
        def get_analysis_definition(self):
            return {}
    
    
    ik_analyzer = CustomAnalyzer("ik_max_word", filter=["lowercase"])
    
    class ArticleType(DocType):
        #伯乐在线文章类型
        suggest = Completion(analyzer=ik_analyzer)
        title = Text(analyzer="ik_max_word")
        create_date = Date()
        url = Keyword()
        url_object_id = Keyword()
        front_image_url = Keyword()
        front_image_path = Keyword()
        praise_nums = Integer()
        comment_nums = Integer()
        fav_nums = Integer()
        tags = Text(analyzer="ik_max_word")
        content = Text(analyzer="ik_max_word")
    
        class Meta:
            index = "jobbole"
            doc_type = "article"
    
    if __name__ == "__main__":
        ArticleType.init()

    12、在Lsv_search下的search的views.py文件中加入代码

    from django.shortcuts import render
    from django.views.generic.base import View
    from search.models import ArticleType
    from django.http import HttpResponse
    import json
    # Create your views here.
    class SearchSuggest(View):
        def get(self, request):
            key_words = request.GET.get('s', '')
            re_datas = []
            if key_words:
                s = ArticleType.search()
                s = s.suggest('my_suggest', key_words, completion={
                    'field': 'suggest',
                    'fuzzy': {'fuzziness': 2},
                    'size': 10
                })
                suggestion = s.execute_suggest()
                for match in suggestion.my_suggest[0].options:
                    source = match._source
                    re_datas.append(source['title'])
            return HttpResponse(json.dumps(re_datas), content_type='application/json')

    10-12完成搜索提示(自动补全功能),效果如下

    13、在urls.py中添加搜索功能接口

  • 相关阅读:
    elementui el-upload弹框确定是否上传文件 需要在上传文件前,可以进行弹窗控制是否上传 upload
    postman 下载地址
    axios 详解
    jQuery点击按钮 切换样式
    基于Vant框架的下拉刷新和上滑加载
    Core Animation一些Demo总结 (动态切换图片、大转盘、图片折叠、进度条等动画效果)
    鼠标悬停显示隐藏省略文字
    遮罩层
    二维码网站
    看图说话
  • 原文地址:https://www.cnblogs.com/jp-mao/p/6938589.html
Copyright © 2011-2022 走看看