美文网首页
Django 基础搜索功能

Django 基础搜索功能

作者: AllenBigBear | 来源:发表于2019-04-16 23:22 被阅读0次

    想在主页上添加一个搜索栏,来进行内容的搜索,看了网上一些文章,主要有两种

    1:利用Django本身数据模型带的搜索功能,实现比较基础的搜索
    2:利用第三方包来实现比较高级的搜索功能

    今天先来做一下基础的搜索功能

    1: 案例与界面

    打个比方,我们一般搜索带文章的网站,都是搜索带“目标内容”的标题或者含有“目标内容”的文章

    首先在主页上创建一个搜索表单

        <form role="search" class="col" action="{% url 'mainsite:search' %}" method="get">
            {% csrf_token %}
            <input type="search" placeholder="请输入想要搜索的内容" name="search_info">
            <button class="" type="submit">搜索</button>
        </form>
    

    这里需要注意的唯一一个地方就是,input标签里面的name,这个将会作为request一对key,value一同传入。


    效果图

    2:views视图函数

    接下来需要我们定义怎么去搜索内容

    def search(request):
        search_info = request.GET.get('search_info')
        error_msg=""
    
        if not search_info:
            error_msg = "您需要输入想要搜索的内容"
            return render(request,'search_result.html',locals())
        search_result = Article.objects.filter(article_title__icontains=search_info)
        return render(request,'search_result.html',locals())
    

    主要的逻辑就是,通过request的GET提取出search_info的内容,也就是我们搜索的内容。
    如果没有搜索内容只是点击了搜索,会提示错误信息。
    反之则看你搜索的内容,有多少文章的标题内含有该内容。

    3: 回到前端渲染

    然后我们来看一下如何渲染搜索出来的结果

        {% if error_msg %}
            {{ error_msg }}
        {% endif %}
    
    <div class="container">
        {% for sr in search_result %}
            <li>{{sr.article_title}}</li>
        {% empty %}
            <h3>没搜索到</h3>
        {% endfor %}
    </div>
    

    如果没有搜索到结果,则会提示"没搜索到"

    进行搜索 搜索结果

    这样,最简单的搜索功能就完成了。
    当然,还可以引入Q查询来进行多条件查询,这个可以看django的文档.

    参考资料:https://www.zmrenwu.com/courses/django-blog-tutorial/materials/26/

    相关文章

      网友评论

          本文标题:Django 基础搜索功能

          本文链接:https://www.haomeiwen.com/subject/eurwwqtx.html