首页 > 解决方案 > 为什么搜索功能在 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>  

标签: djangodjango-modelsdjango-viewsdjango-templatesdjango-urls

解决方案


您在模板中使用name 属性进行搜索输入,searchBook因此可以像这样更改视图。

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

推荐阅读