Django: Lese alle image files aus static folder

Django, Flask, Bottle, WSGI, CGI…
Antworten
naheliegend
User
Beiträge: 439
Registriert: Mittwoch 8. August 2018, 16:42

Hallo,

irgendwie bekomme ich es nicht hin alle image files aus meiner static folder zu lesen, damit ich sie im view an das template per liste übergeben kann.

Code: Alles auswählen

project_name
 - deploy
 - app_name
    - migrations
    - static
       - app_name
          - css
          - fonts
          - images
              - 01.jpg
              - 02.jpg
              - 03.jpg
           - js
    - templates
    - views.py
 - project_name
    - settings.py
    - wsgi.py
 - __init__.py
 - manage.py
Brauche quasi den Pfad zu images, damit ich mit os.dir() dann ['01.jpg', '02.jpg', '03.jpg'] übergeben kann.

Im template lade ich die Bilder immer mit:

Code: Alles auswählen

{% static 'app_name/images/01.jpg' %}
Hat ja jemand eine Idee?
__backjack__: "Jemand der VB oder PHP kann, der also was Programmieren angeht irgendwo im negativen Bereich liegt (...)"
naheliegend
User
Beiträge: 439
Registriert: Mittwoch 8. August 2018, 16:42

Edit:

Code: Alles auswählen

>> print(settings.STATIC_ROOT)

/Users/name/project_name/project_name/static/'

Das verstehe ich nicht. Da ist ja gar kein static Ordner? Wie komme ich denn in den static Ordner meiner 'app_name' App?
__backjack__: "Jemand der VB oder PHP kann, der also was Programmieren angeht irgendwo im negativen Bereich liegt (...)"
Benutzeravatar
kbr
User
Beiträge: 1487
Registriert: Mittwoch 15. Oktober 2008, 09:27

Der static-folder gehört auf Projekt-Ebene, so wie von settings.STATIC_ROOT ausgewiesen, und nicht auf App-Ebene.
naheliegend
User
Beiträge: 439
Registriert: Mittwoch 8. August 2018, 16:42

Code: Alles auswählen

project_name
 - deploy
 - app_name
    - migrations
    - templates
    - views.py
 - project_name
     - static
       - app_name
          - css
          - fonts
          - images
              - 01.jpg
              - 02.jpg
              - 03.jpg
           - js
    - settings.py
    - wsgi.py
 - __init__.py
 - manage.py
Jetzt findet er alle meine static files nicht mehr.

Code: Alles auswählen

STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, "static")

Und Django docs sagt, man soll die in die App packen: https://docs.djangoproject.com/en/3.2/h ... tic-files/
Store your static files in a folder called static in your app. For example my_app/static/my_app/example.jpg.
__backjack__: "Jemand der VB oder PHP kann, der also was Programmieren angeht irgendwo im negativen Bereich liegt (...)"
Benutzeravatar
kbr
User
Beiträge: 1487
Registriert: Mittwoch 15. Oktober 2008, 09:27

Es gibt da verschiedene Ansätze. Static-file folders in Apps ist aus meiner Sicht nur sinnvoll, wenn es sich um eine App handelt, die auch in anderen Projekten verwendet werden soll und eigene statische Dateien mitbringt. Ansonsten halte ich für besser, statische Dateien in einem gemeinsamen Verzeichnis –ggf. mit Unterverzeichnissen– zu sammeln. Schau mal unter den folgenden Links:
https://docs.djangoproject.com/en/3.2/h ... tic-files/ (ok, den hattest Du oben schon)
https://docs.djangoproject.com/en/3.2/h ... eployment/
Antworten