您好,我需要实现以下内容:我有一个类别选择的形式,并根据选定的类别,我需要重定向用户到一个页面与此类别的产品。
URLS.PY
from django.urls import path
from first.views import productsHTML, productHTML, products_category
urlpatterns = [
path("products_category", products_category, name = "products_category"),
path("productsHTML/<str:uuid>", productHTML, name = "productHTML"),
path("productsHTML/", productsHTML, name = "productsHTML"),
]
VIEWS.PY
from django.shortcuts import render, redirect
from .models import Product
from .forms import CategoryChoice
def productsHTML(request):
form = CategoryChoice(request.POST or None)
if request.method == 'POST' and form.is_valid():
category = form.cleaned_data['category']
products_po_category = Product.objects.filter(category=category)
return redirect('products_category', products_po_category=products_po_category, permanent=True)
all_products = Product.objects.all()
context = {
'form': form,
'products': all_products,
}
return render(request, "products.html", context)
def products_category(request,products_po_category):
context = {
"products_po_category": products_po_category
}
return render(request, "product_category.html", context)
通过form.cleaned_data ['category'],我获得了关于所选类别的数据,然后通过Product.objects.filter(category=category),我获得了该类别的对象,在所有这些之后,我重定向到包含该类别产品的页面,传递所选类别的对象列表。
FORMS.PY
from django import forms
from .models import Product
class CategoryChoice(forms.ModelForm):
class Meta:
model = Product
fields = ('category',)
widgets = {
'category': forms.Select(),
}
错误的全文:对于带有关键字参数'' products_po_category '的'products_category',请反向操作:〈QuerySet [〈Product:Maybach〉]〉}'未找到。已尝试1个模式:['products_category\Z']
我将很高兴为任何帮助!如果您需要更多的信息,我准备提供。谢谢。
1条答案
按热度按时间1hdlvixo1#
products_categoryurl没有参数。
您创建视图的方式不对,请在productsHTML视图中使用category_id参数重定向,并在products_category视图中过滤产品。
您的productsHTML会喜欢这个:
products_category视图将是:
urls.py将是:
试试这个代码。