首页 > 解决方案 > 对产品进行分类

问题描述

我有一个类似的清单

<select class="selection-2" name="sorting">
    <option>Default Sorting</option>
    <option>Popularity</option>
    <option>Price: low to high</option>
    <option>Price: high to low</option>
</select>

现在我想使用 Django View 对我列出到我的 html 页面的产品进行排序。

def product_list(request, category_slug=None):
    category = None
    categories = Category.objects.all()
    products = Product.objects.filter(available=True)
    paginator = Paginator(products, 9)
    page =  request.GET.get('page')
    products = paginator.get_page(page) 

    if category_slug:
        category = get_object_or_404(Category, slug=category_slug)
        products = Product.objects.filter(category=category)
    context = {
        'category': category,
        'categories': categories,
        'products': products
    }

return render(request, 'shop/product/list.html', context)

这是我的产品列表视图,我想为产品的排序和过滤创建一个视图。

通过这样做,我想将过滤器应用于我的产品列表,并按价格“从低到高”或“从高到低”顺序对它们进行排序。

为此,我创建了一个过滤视图

def filter(request):
    try:  
        q = request.GET.get('')
        print(q)
    except:
        q = None
    if q:
        products = Product.objects.filter(price__range=(price1,price2))
        context = {'query': q, 'products': products}    
        template = 'shop/product/result.html'
    else:
        context = {'query': q}      
        template = 'shop/product/list.html'
    return render(request, template, context)

在此我需要创建表单以将结果发布到我的“Product_list”视图。

标签: djangodjango-views

解决方案


推荐阅读