Django 基础搜索功能

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

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

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

1: 案例与界面

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

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

    

这里需要注意的唯一一个地方就是,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 %}

{% for sr in search_result %}
  • {{sr.article_title}}
  • {% empty %}

    没搜索到

    {% endfor %}

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

    进行搜索
    搜索结果

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

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

    你可能感兴趣的:(Django 基础搜索功能)