django - 简单的站点搜索 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>
解决方案
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
})
改变你的看法
推荐阅读
- java - 将相同的值传递给方法并使其第一次返回true,第二次返回false
- xslt - 基于另一个属性复制 XSLT 属性
- vuejs2 - 布尔值转换为字符串
- linux - gdal的集群安装:gdalinfo hdf“不被识别为支持的文件格式”
- javascript - 如果在 css 中有 ::before,是否有方法可以更改内容。
- gf - 英语中的随机短语生成和性别/人类一致性
- if-statement - 改进代码以避免循环和条件
- ruby-on-rails - 为什么我的 after_save 回调在我更改对象之前以某种方式给了我对象?
- python - 熊猫 - 阅读表格但排除一些
- autodesk-forge - Forge BIM360 数据管理