Django 基礎(chǔ)搜索功能

想在主頁上添加一個搜索欄,來進行內(nèi)容的搜索,看了網(wǎng)上一些文章,主要有兩種

1:利用Django本身數(shù)據(jù)模型帶的搜索功能,實現(xiàn)比較基礎(chǔ)的搜索
2:利用第三方包來實現(xiàn)比較高級的搜索功能

今天先來做一下基礎(chǔ)的搜索功能

1: 案例與界面

打個比方,我們一般搜索帶文章的網(wǎng)站,都是搜索帶“目標內(nèi)容”的標題或者含有“目標內(nèi)容”的文章

首先在主頁上創(chuàng)建一個搜索表單

    <form role="search" class="col" action="{% url 'mainsite:search' %}" method="get">
        {% csrf_token %}
        <input type="search" placeholder="請輸入想要搜索的內(nèi)容" name="search_info">
        <button class="" type="submit">搜索</button>
    </form>

這里需要注意的唯一一個地方就是,input標簽里面的name,這個將會作為request一對key,value一同傳入。


效果圖

2:views視圖函數(shù)

接下來需要我們定義怎么去搜索內(nèi)容

def search(request):
    search_info = request.GET.get('search_info')
    error_msg=""

    if not search_info:
        error_msg = "您需要輸入想要搜索的內(nèi)容"
        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的內(nèi)容,也就是我們搜索的內(nèi)容。
如果沒有搜索內(nèi)容只是點擊了搜索,會提示錯誤信息。
反之則看你搜索的內(nèi)容,有多少文章的標題內(nèi)含有該內(nèi)容。

3: 回到前端渲染

然后我們來看一下如何渲染搜索出來的結(jié)果

    {% if error_msg %}
        {{ error_msg }}
    {% endif %}

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

如果沒有搜索到結(jié)果,則會提示"沒搜索到"

進行搜索
搜索結(jié)果

這樣,最簡單的搜索功能就完成了。
當(dāng)然,還可以引入Q查詢來進行多條件查詢,這個可以看django的文檔.

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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容