Serve image from media: Tango with Django Tutorial

Django, Flask, Bottle, WSGI, CGI…
Antworten
mzh
User
Beiträge: 295
Registriert: Dienstag 3. März 2009, 15:27
Wohnort: ZH

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'.
[url=http://www.proandkon.com]proandkon.com[/url]
Benutzeravatar
kbr
User
Beiträge: 1487
Registriert: Mittwoch 15. Oktober 2008, 09:27

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
Antworten