Seite 1 von 1

Serve image from media: Tango with Django Tutorial

Verfasst: Mittwoch 18. Juni 2014, 13:24
von mzh
Im Tango with Django Tutorial wird eine Applikation gebaut, welche ein Bild aus einem 'media'-Verzeichnis liefern kann.
http://www.tangowithdjango.com/book/cha ... tatic.html
Siehe Abschnitt 4.4.

Was mich wundert ist, wie ich, wie in der zweiten Aufgabe verlangt, ein Template schreiben soll, welches von dem Mediaverzeichnis ein Bild liefert.
Mein direkter Serveraufruf, à la
127.0.0.1:8000/media/bild.jpg
funktioniert. Aber wie ich aus dem Template auf den media-server zugreifen soll weiss ich nicht. Hier mein template:

Code: Alles auswählen

<!DOCTYPE html>
<html>

<!-- Inform django template system that static media wil be used. -->
{% load static %}

    <head>
        <title>JD-27</title>
        <link rel="stylesheet" href="{% static "css/base.css" %}"/>
    </head>

    <body>
        <h1>jd-27</h1>
        <h2>About</h2>
        <strong>{{ about1 }}</strong><br />
        <a href="/rango/">Index</a>
        <img src="{% static "media/img-media.jpg"%}"/>
    </body>
</html>
Wenn ich stattdessen schreibe

Code: Alles auswählen

<img src="{% media "img-media.jpg"%}"/>
, dann heisst es 'Invalid block tag'.

Re: Serve image from media: Tango with Django Tutorial

Verfasst: Donnerstag 19. Juni 2014, 16:20
von kbr
mzh hat geschrieben:Was mich wundert ist, wie ich, wie in der zweiten Aufgabe verlangt, ein Template schreiben soll, welches von dem Mediaverzeichnis ein Bild liefert.
Das ist auch ein schlechtes Beispiel. Denn das Media-Verzeichnis ist nicht für statische Inhalte (wie z.B. css-Dateien) gedacht, sondern für Dateien die von Nutzern der Applikation hochgeladen werden. Diese werden üblicherweise als FileFields oder ImageFields in Models angelegt und verfügen über Attribute, welche das Ausliefern innerhalb von Templates ermöglichen. Mehr dazu u.a. hier:
https://docs.djangoproject.com/en/1.6/r ... #filefield