2016-07-07 5 views
2

Ich habe gerade angefangen, Django-Filer zu verwenden, und ich bin ein wenig verloren, wie ich tatsächlich auf die Bilder im Admin-System verweisen kann.Django-Filer: Lesen der Ordnerstruktur in einer Vorlage, um eine Galerie zu erstellen

Ich muss eine einfache dynamische Galerie auf einer einzigen Seite anzeigen, die mehrere Alben verarbeiten kann. Jedes Album ist eine neue Überschrift auf der Seite und alle Bilder in diesem Album werden unter dieser Überschrift angezeigt. Die grobe Struktur I in Django-Filer Admin-System zu verwenden, ist die Hoffnung ist:

  • Wurzel
    • Bildergalerie
      • Album 1
        • Bild 1
        • Bild 2
        • Bild 3
      • Album 2
    • Eine weitere Galerie

Also meine Frage ist, eine Schleife in der Vorlage verwendet wird, wie würde ich mich über jedes Bild angezeigt wird, mit dem Album Ordner eine neue Überschrift?

Eine zweite verwandte Frage lautet: Wie würde ich das Ordnermodell so erweitern, dass es ein Beschreibungsfeld enthält, ohne die Funktionalität zu beeinträchtigen?

Antwort

0

Es ist was ich getan habe, vielleicht wird es mit einigen Anpassungen (Ihre erste Frage) hilfreich sein.

Zuerst erstelle ich Ordner im Filer (es kann Unterordner geben).

Danach füge ich neue FoldersModel für jeden Ordner, den ich in der Galerie möchte. Sie müssen die Ordner "Bildergalerie" und "Eine andere Galerie" hinzufügen.

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 %} 

Ich bin nicht sicher, ob dies der beste Weg, es zu tun ist, aber funktioniert für mich.

Edit:
Ich denke, es ist besser, diese zu nutzen: https://django-filebrowser.readthedocs.io/en/latest/filelisting.html