为什么搜索功能在 Django 中不起作用?

why Search function is not working in django?

在我搜索特定关键字后,Django 没有检索匹配的搜索项,而是显示所有数据。当我搜索 history 时,它显示了所有书籍,尽管我在数据库中有历史书籍。

views.py

def home(request):
    if request.method == 'POST':
        searchName = request.POST.get('Search')
        if not searchName :
             searchName = ""
        
        context={
            'data': Book.objects.filter(bookname__contains=searchName)
        }
        return render(request, 'library_site/home.html',context)
    else:
        context={
            'data': Book.objects.all()
        }           
    return render(request, 'library_site/home.html',context)

form field in html

<form method="POST" action="{% url 'home' %}">
    {% csrf_token %}
    <input   class="search-input" type="text"  name="searchBook" placeholder="Search Book Name here...">
    <input   class="btn" type="submit"  name="search" value="Search">                
</form>  

您在模板中使用 name 属性 作为搜索输入 searchBook,因此请像这样更改视图。

if request.method == 'POST':
    searchName = request.POST.get('<b>searchBook'</b>, '')
        
    context={
       'data': Book.objects.filter(bookname__contains=searchName)
        }
    return render(request, 'library_site/home.html',context)</pre>