Задать вопрос
@Hinkyma

Как реализовать отображение товаров по категории?

Не выводятся товары по категориям...
если вводить в ручную категорию то на странице отображаются продукты из этой категории.
Но из навбара если кликать на категорию о на странице не высвечиваются товары из категории.
И самое интересное что при наведении мышки на категории я вижу что она ведет по ссылке, но все равно не переходит...
никак не могу решить этот глупый вопрос.

вот код 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'),
 
]
  • Вопрос задан
  • 157 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы