首页 > 解决方案 > 单击特定类别名称后如何执行搜索功能?

问题描述

Anchor tags在主页上有一些书籍类别名称。如果用户单击特定类别,我想向他们展示该类别的所有书籍。但我不知道将类别名称从 Anchor 标记传递url.pyviews.py然后执行搜索功能
home.html

<ul class="book-catagory">
    <li class="list-item">
        <a href="{% url 'home' %}">Philosophy</a>
    </li>
    <li class="list-item">
        <a href="{% url 'home' %}">Litereture</a>
    </li>
    <li class="list-item">
        <a href="{% url 'home' %}">Computer Science</a>
    </li>
    <li class="list-item">
        <a href="{% url 'home' %}">Electrical</a>
    </li>
</ul>

path in url.py

path('',views.home, name='home')

views.py

def home(request):
    if request.method == 'POST':
        searchName = request.POST.get('searchBook')
        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)

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

解决方案


视图.py

def Book1(请求):类别=['1']

books= Product.objects.filter(category=category)

context = {'books':books}
return render(request, 'store/store.html', context)

网址.py

网址模式 = [

path('book1/', views.Book1, name='book1')

]

models.py 从多选字段导入 MultiSelectField

类 Book(models.Model): MY_CHOICES = ((1, 'book1'), (2, 'book2'),

          )

category = MultiSelectField(choices=MY_CHOICES,
                     max_choices=4,
                     max_length=30,null=True,blank=True)

推荐阅读