Django-filer: чтение структуры папок в шаблоне для создания галереи

Я только начал использовать Django-Filer, и я немного растерялся относительно того, как я могу на самом деле ссылаться на изображения, загруженные в систему администратора.

Мне нужно отобразить простую динамическую галерею на одной странице, которая может обрабатывать несколько альбомов. Каждый альбом - это новый заголовок на странице, и все изображения в этом альбоме отображаются под этим заголовком. Примерная структура, которую я надеюсь использовать в системе администрирования Django-Filer:

  • корень
    • Галерея
      • Альбом 1
        • Изображение 1
        • Изображение 2
        • Изображение 3
      • Альбом 2
    • Другая Галерея

Поэтому мой вопрос заключается в том, чтобы с помощью цикла в шаблоне как отображать каждое изображение, используя папку "Альбом" в качестве нового заголовка?

Второй связанный с этим вопрос: как бы я расширил модель папки, включив в нее поле описания, не нарушая ее функциональности?

1 ответ

Это то, что я сделал, может быть, это поможет с некоторыми корректировками (ваш первый вопрос).

Сначала я создаю папки в filer (там могут быть подпапки).

После этого я добавляю новую FoldersModel для каждой папки в галерее. Вам нужно будет добавить папки "Галерея изображений" и "Другая галерея".

models.py

from filer.fields.folder import FilerFolderField

class FoldersModel(models.Model):
    folder = FilerFolderField()

views.py

from django.shortcuts import render
from models import FoldersModel

def show(request):
    all_folders = FoldersModel.objects.all()

    return render(request, 'main.html', {'all_folders': all_folders})

main.html

{% load thumbnail %}

    {% for f in all_folders %}

    <div class="title">{{ f.folder }}</div>

    {% for img in f.folder.files %}
    <!-- show files from folder -->
        <img src='{% thumbnail img 200x200 crop=scale %}'/>
    {% endfor %}

    {% for subfolder in f.folder.get_children %}
    <!-- getting all subfolders -->
        <div class="title">{{ subfolder }}</div>

        {% for img in subfolder.files %}
        <!-- show files from subfolder -->
        <img src='{% thumbnail img 200x200 crop=scale %}'/>
        {% endfor %}
    {% endfor %}

{% endfor %}

Я не уверен, что это лучший способ сделать это, но у меня работает.

Редактировать:
Я думаю, что лучше использовать это: https://django-filebrowser.readthedocs.io/en/latest/filelisting.html

Другие вопросы по тегам