首页 > 解决方案 > 简单的站点搜索 django

问题描述

我正在尝试为在线商店中的产品创建一个简单的搜索。我在这里观看了教程并阅读了问题。我试着去做。什么都没有成功。我做错什么了?视图.py

from django.shortcuts import render, get_object_or_404, render_to_response
from django.db.models import Q
from cart.forms import CartAddProductForm
from .models import Category, Product
# Product page
def ProductList(request, category_slug=None):
    category = None
    categories = Category.objects.all()
    products = Product.objects.filter(available=True)
    query = request.GET.get('q')
    if query:
        return Product.objects.filter(title_icontains=query)


    if category_slug:
        category = get_object_or_404(Category, slug=category_slug)
        products = products.filter(category=category)
    return render(request, 'product/list.html', {
        'category': category,
        'categories': categories,
        'products': products
    })

def ProductDetail(request, id, slug):

    product = get_object_or_404(Product, id=id, slug=slug, available=True)
    return render(request, 'product/detail.html', {'product': product})


def ProductDetail(request, id, slug):
    product = get_object_or_404(Product, id=id, slug=slug, available=True)
    cart_product_form = CartAddProductForm()
    return render(request, 'product/detail.html',
                  {'product': product,
                  'cart_product_form': cart_product_form})

产品\list.html

 <form method="get" action="">
          <div class="row">
            <div class="col">
              <input type="text" name="query" placeholder="search..." value="{{request.get.q}}"/>
              <input type="submit" value="search"/>
            </div>
          </div>
        </form>

标签: djangopython-3.xsearch

解决方案


def ProductList(request, category_slug=None):
    category = None
    categories = Category.objects.all()
    products = Product.objects.filter(available=True)
    query = request.GET.get('query') //as your input field name is query and not q
    if query:
        products = Product.objects.filter(title__icontains=query) // __ not _ 
        return render(request, 'product/list.html', {
        'products': products
    })

    if category_slug:
        category = get_object_or_404(Category, slug=category_slug)
        products = products.filter(category=category)
        return render(request, 'product/list.html', {
            'category': category,
            'categories': categories,
            'products': products
        })

改变你的看法


推荐阅读