Не выводятся товары по категориям...
если вводить в ручную категорию то на странице отображаются продукты из этой категории.
Но из навбара если кликать на категорию о на странице не высвечиваются товары из категории.
И самое интересное что при наведении мышки на категории я вижу что она ведет по ссылке, но все равно не переходит...
никак не могу решить этот глупый вопрос.
вот код navbar
<nav class="navbar navbar-expand-md navbar-light bg-dark">
<a href="/" class="navbar-brand"><span class="material-icons text-success material-icons md-48">
shopping_basket
</span></a>
<button class="navbar-toggler bg-light" data-toggle="collapse" data-target="#navbar"><span class="navbar-toggler-icon"></span></button>
<div id="navbar" class="collapse navbar-collapse justify-content-between">
<ul class="navbar-nav">
<li class="nav-item dropdown" data-toggle="dropdown"><a class="nav-link text-light text-uppercase font-weight-bold px-3 dropdown-toggle" href="">Categories</a>
<div class="dropdown-menu">
<a class="dropdown-item" href="{% url 'home' %}">All Products</a>
{% for category in links %}
<a class="dropdown-item" href="{{category.get_url}}">{{category.name}}</a>
{% endfor %}
</div>
</li>
<li class="nav-item"><a class="nav-link text-light text-uppercase font-weight-bold px-3" href="">Contacts</a></li>
<li class="nav-item"><a class="nav-link text-light text-uppercase font-weight-bold px-3" href="">About</a></li>
</ul>
<form class="form-inline">
<div class="input-group">
<input type="" placeholder="Search">
<div>
<button class="btn-success"><span class="material-icons material-icons md-24">
saved_search
</span></button>
</div>
</div>
</form>
</div>
</nav>
context_processors
from .models import Category
def menu_links(request):
links = Category.objects.all()
return dict(links = links)
settings.py
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
'shop.context_processors.menu_links',
],
},
},
]
models.py
from django.db import models
from django.urls import reverse
# Create your models here.
class Category(models.Model):
name = models.CharField(max_length=250, unique=True)
slug = models.SlugField(max_length=250, unique=True)
description = models.TextField(blank=True)
image = models.ImageField(upload_to='category', blank=True)
class Meta:
ordering = ('name', )
verbose_name = 'category'
verbose_name_plural = 'categories'
def get_url(self):
return reverse('products_by_category', args=[self.slug])
def __str__(self):
return self.name
class Product(models.Model):
name = models.CharField(max_length=250, unique=True)
slug = models.SlugField(max_length=250, unique=True)
description = models.TextField(blank=True)
category = models.ForeignKey(Category, on_delete=models.CASCADE)
price = models.DecimalField(max_digits=10, decimal_places=2)
image = models.ImageField(upload_to='product', blank=True)
stock = models.IntegerField()
available = models.BooleanField(default=True)
created = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(auto_now=True)
class Meta:
ordering = ('name', )
verbose_name = 'product'
verbose_name_plural = 'products'
def get_url(self):
return reverse('product_detail', args=[self.category.slug, self.slug])
def __str__(self):
return self.name
urls.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.home, name='home'),
path('<slug:category_slug>', views.home, name='products_by_category'),
path('<slug:category_slug>/<slug:product_slug>', views.product, name='product_detail'),
]