Показать страницу товара по категориям - передать 2 var в url

Вы получаете товары по категориям в этой функции

Урлы

path('category/<str:slug>', views.categoryslug, name="categoryslug"),

Виды

def categoryslug(request, slug):
    category = Category.objects.get(slug=slug)
    context = {
        'category': category,
        'products': category.product_set.all(),
    }
    #return render(request, 'pages/catpro.html', context)

Но я хочу открыть товар по этой ссылке http://127.0.0.1:8000/category/phone/redmi-8-pro

Шаблон

{% url 'catproslug' product.slug d.slug %}

Урлы

path('category/<str:slug>/<str:proslug>', views.catproslug, name="catproslug")

Виды

def catproslug(request, slug, proslug):
    d = Product.objects.get(slug=proslug)
    context = {
        'd': d,
        'category':category
    }
    return render(request, 'pages/catpro.html', context)

Итак, допустим, у вас есть url, который позволяет просматривать все категории

path('category/', views.categorylist, name="category-list")

также у вас есть url для просмотра всех продуктов категории

path('category/<str:product_category_slug>/', views.product_list, name="product-list")

И, наконец, при нажатии на товар, url детализации товара будет иметь вид

path('category/<str:product_category_slug>/<str:product_slug>/', views.product_detail, name="product-detail")

И ваш views.py будет иметь вид

def product_detail(request, product_category_slug=None, product_slug=None):
    # your logic to return product detail
Вернуться на верх