Как сделать такую страницу категории?

Кто может помочь сделать такую страницу категории?

Пример страницы категории

Я много гуглил и не нашел стоящей информации о реализации такой функциональности. Мне нужно хотя бы какое-то объяснение реализации с несколькими примерами, в основном "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

Вернуться на верх