2016-03-30 27 views
-1

Ich versuche herauszufinden, wie Sie dieses Problem mit den Bildern lösen, aber ich kann die Antwort nicht finden. Ich versuche ein 'ImageField' meiner Modelle in einer Vorlage anzuzeigen.Zeige ein Bild von Models in Django

Ich habe ein Bild über die Admin-Site hochgeladen, und wenn ich es anzeigen möchte, kann ich das Bild nicht richtig darstellen (es erscheint ein Symbol, aber kann das Bild nicht sehen).

Das Modell Ich versuche, das Bild zu zeigen, aus dieser Anweisung für die Imagefield hat:

figure = models.ImageField(upload_to='static/img/list-icons', 
           blank=True, 
           null=True, 
           verbose_name=_("Figure")) 

Als der ‚upload_to‘ Pfad den Pfad zu dem statischen Datei Verzeichnis, in dem die Bilder gespeichert werden. Ich versuche, das Bild in der Vorlage mit diesem Code zu bekommen (ich habe verschiedene Kombinationen ausprobiert):

{% for quiz in quiz_list %} 

      <tr> 
       <td>{{ quiz.title }}</td> 
       <td>{{ quiz.category }}</td> 
       <td><img src="{{ quiz.figure.url }}" /></td> 
       <td>{{ quiz.single_attempt }}</td> 
      </tr> 

     {% endfor %} 

Das Modell Quiz (Listview) und ich habe nichts von der views.py geändert (nur hinzugefügt kürzlich das Bilderfeld). Wäre es erforderlich, einige Anweisungen hinzuzufügen? Was für?

ich eine bloße aproximation von 'MEDIA_ROOT' in settings.py, mit dem Pfad zu meinem statischen Bildern Verzeichnis (das gleiche wie das upload_to im Modell) hinzugefügt habe, auch nicht sicher, ob ich bin, wie zu definieren oder wenn es notwendig ist, das zu definieren, 'MEDIA_URL'.

Wie kann ich Bilder direkt vom Modell anzeigen lassen (ich habe auch versucht, {{quiz.figure}}, aber nur die 'upload_to' Pfad angezeigt), wählen sie aus dem statischen Verzeichnis, in dem sie sich befinden? Hilfe wäre sehr geschätzt, danke. Ich beantworte die erforderlichen zusätzlichen Informationen.

EDIT 1: die Erfassung von dem, was es gibt jetzt nur dies:

Capture of what it outputs

Meine urls.py Datei wie folgt beendet:

+ static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) 

Ich denke, es ist erforderlich um CSS so zu machen, wie es jetzt ist.

Antwort

1

Sie rendern das Bild nicht richtig.

Sie

<td><img src="quiz.figure.url" /></td> 

mit

<td><img src="{{ quiz.figure.url }}" /></td> 

UPDATE ersetzen sollte: Es scheint, dass Sie in Ihrem Projekt urls.py. Medien URL-Eintrag nicht haben In den Projekt Urls, dies tun:

from django.conf import settings 
from django.conf.urls.static import static 
... 
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) 

Stellen Sie außerdem sicher, dass Sie eine entsprechende Einstellung Ihrer settings.py

# Media files 
MEDIA_ROOT = os.path.join(BASE_DIR, 'media') 
MEDIA_URL = '/media/' 
+0

Danke, reparierte es gerade definiert haben, aber der Ausgang ist immer noch die gleichen. .. Sollte ich etwas mit dem 'MEDIA_ROOT' oder 'MEDIA_URL' in settings.py verwalten? – Jim

+0

Was ist die Ausgabe? Hast du Medien-URLs in deinen URL-Mustern? – v1k45

+0

Ich habe den ersten Beitrag bearbeitet, was du unter Medien-URLs meinst?Ich habe nur die normalen URL-Konfigurationsmuster, habe nichts geändert, als ich das Bildfeld in Modellen hinzugefügt habe. Sollte es einen Pfad oder etwas in der URLs.py haben? Danke für die Antworten – Jim

Verwandte Themen