You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django表单分类筛选实现:点击搜索跳转对应商品页

实现分类搜索功能的具体步骤

1. 修改视图函数(views.py)

更新productsHTML函数,处理分类筛选逻辑,同时把表单传入模板:

def productsHTML(request):
    # 从GET请求里获取用户选择的分类
    selected_category = request.GET.get('category')
    
    if selected_category:
        # 筛选对应分类的商品(这里假设Product模型的category字段值和CATEGORY_CHOICES的key匹配)
        product_list = Product.objects.filter(category=selected_category)
    else:
        # 无筛选条件时显示全部商品
        product_list = Product.objects.all()
    
    # 初始化表单,若有筛选参数则自动保留选中状态
    category_form = CategoryChoice(request.GET)
    
    return render(request, "products.html", {
        "products": product_list,
        "form": category_form
    })

注意:如果Product的category是外键(比如关联Category模型),把过滤条件改成category__slug=selected_category之类的,匹配你模型里的字段

2. 编写/更新HTML模板(products.html)

渲染表单并绑定提交逻辑,同时展示商品列表:

<!-- 分类搜索表单 -->
<form method="GET" action="{% url 'productsHTML' %}">
    {{ form.as_p }}
    <button type="submit">搜索</button>
</form>

<!-- 商品列表展示 -->
<div class="product-list">
    {% for product in products %}
        <div class="product-item">
            <a href="{% url 'productHTML' uuid=product.id %}">{{ product.name }}</a>
            <!-- 按需添加商品价格、图片等信息 -->
        </div>
    {% empty %}
        <p>该分类下暂无商品</p>
    {% endfor %}
</div>
  • 用GET方法提交表单,筛选参数会显示在URL中(例如productsHTML/?category=sport),支持页面刷新和分享
  • action指定提交到productsHTML命名URL,确保路径正确

3. URL配置无需修改

现有urls.py的配置已经满足需求,不需要新增或修改路径,因为我们通过GET参数传递分类信息。

内容的提问来源于stack exchange,提问作者Глеб Гудалин

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 21:52:22