Неверная структура URL в Django - PullRequest
0 голосов
/ 19 июня 2020

У меня простая структура Shop_list -> Product_list -> Product_detail

У меня ошибка. Когда я нажимаю на магазин, я вижу товары для ВСЕХ магазинов.

Причина ошибки - недопустимый urls.py logi c

Я пытался использовать slug, но не получил результата.

Мне нужно видеть товары только для магазина, по которому щелкнули

Я хочу добиться этого следующим образом:

  1. start_url /
  2. Перейдите в магазин -> start_url / shop1_url
  3. Щелкните по продукту -> 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 %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...