nikitamikheev
@nikitamikheev

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

Сделал вот такой набросок, к которому я хочу прийти:
62f8c231b1cd4094757895.jpeg

Проблема в том что я никак не соображу что мне делать дальше и какие теги нужно вписывать в шаблон чтобы выводить мне нужную информацию, может нужно views переделать, старался воспользоваться помощью гугла, просмотрел чуть ли не каждую страничкой с упоминанием нужной мне информации но ничего дельного не нашёл. Я хочу сделать страницу категорий точь в точь как на наброске.

Никак не соображу как это воплотить в реальность, в данный момент имею такой функционал (используется django-mptt)

views.py
def show_category(request, hierarchy=None):
    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: тут

Пожалуйста помогите реализовать эту страничку, уже обратиться некуда. Очень много гуглил, но ничего нужного не нашёл.
  • Вопрос задан
  • 189 просмотров
Решения вопроса 1
@maksam07
Сделал вот такой набросок, к чему мне нужно прийти

К вот таким страницам категорий:

Может я туговат, но не понимаю, что сделано? Что нужно сделать? Что не получается сделать?
На скриншоте я вижу что изначально есть список категорий (3 блока) и подкатегории в них. Переходишь в подкатегорию и у тебя считай все то же самое: 3 блока с подкатегориями. И я так понимаю, это до бесконечности, пока есть подкатегории. Только начальная страница со списком категорий и другие немного отличаются заголовками.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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