У меня простая структура Shop_list -> Product_list -> Product_detail
У меня ошибка. Когда я нажимаю на магазин, я вижу товары для ВСЕХ магазинов.
Причина ошибки - недопустимый urls.py logi c
Я пытался использовать slug, но не получил результата.
Мне нужно видеть товары только для магазина, по которому щелкнули
Я хочу добиться этого следующим образом:
- start_url /
- Перейдите в магазин -> start_url / shop1_url
- Щелкните по продукту -> start_url / shop1_url / product1_url
models.py
class Shop(models.Model):
title = models.CharField(max_length=200)
image = models.ImageField(blank=True)
class Product(models.Model):
shop = models.ForeignKey(Shop, on_delete=models.CASCADE)
title = models.CharField(max_length=200)
price = models.CharField(max_length=200)
urls.py
from .views import HomePageView, ProductListView, produt_detail
urlpatterns = [
path('', HomePageView.as_view(), name='shop_list'),
path('<int:pk>/', ProductListView.as_view(), name='product_list'),
#path('tags/<slug>/', ProductListView.as_view(), name='product_list'),
path('product/<int:pk>/', views.produt_detail, name='product_detail'),
]
views.py
class HomePageView(ListView):
model = Shop
template_name = 'blog/shop_list.html'
page_kwarg = 'shop'
context_object_name = 'shops'
class ProductListView(ListView):
model = Product
template_name = 'blog/product_list.html'
page_kwarg = 'product'
context_object_name = 'products'
def produt_detail(request, pk):
print(request)
product = get_object_or_404(Product, pk=pk)
return render(request, 'blog/product_detail.html', {'product': product})
shop_list. html
{% for shop in shops %}
<div class="col-md-4">
<div class="card mb-4 box-shadow">
<a href="{% url 'product_list' pk=shop.pk %}">
<img class="card-img-top" src="{{shop.image.url}}" alt="Card image cap" style="width:120px;height:120px;margin:auto;">
</a>
...
{% endfor %}