Как сделать такую страницу категории?
Кто может помочь сделать такую страницу категории?
Я много гуглил и не нашел стоящей информации о реализации такой функциональности. Мне нужно хотя бы какое-то объяснение реализации с несколькими примерами, в основном "views.py" и теги шаблонов. Буду крайне признателен за любую помощь и подсказки в реализации.
На данный момент у меня такой код:
views.py
def show_category(request, hierarchy=None):
'''
Link hierarchy
'''
hierarchy = (hierarchy or "").strip("/") # Remove stray slashes
if hierarchy:
category_slug = hierarchy.split('/')
parent = None
for slug in category_slug[:-1]:
parent = Categories.objects.get(parent=parent, slug=slug)
category = Categories.objects.get(parent=parent, slug=category_slug[-1])
else:
category = None
if category:
return render(request, 'shop/categories.html', {'instance': category})
# No category, show top-level content somehow
category = Categories.objects.all()
return render(request, 'shop/category.html', {'instance': category})
models.py
class Categories(MPTTModel):
title = models.CharField(max_length=250, db_index=True)
slug = models.SlugField(max_length=250, unique=True)
imagePath = models.ImageField(upload_to='images/categories/', blank=True, verbose_name='Изображение категории')
parent = TreeForeignKey('self', blank=True, null=True, related_name='children', on_delete=models.CASCADE)
class MPTTMeta:
order_insertion_by = ['title']
class Meta:
unique_together = (('parent', 'slug',))
verbose_name_plural = 'categories'
def get_slug_list(self):
try:
ancestors = self.get_ancestors(include_self=True)
except:
ancestors = []
else:
ancestors = [i.slug for i in ancestors]
slugs = []
for i in range(len(ancestors)):
slugs.append('/'.join(ancestors[:i + 1]))
return slugs
def __str__(self):
return self.title
Шаблонные файлы "category" и "categories" - pastebin