2 Stimmen

Wie zeigt man Bild-Objekte in einem Django-Template mit einem benutzerdefinierten Template-Tag (einschließlich Kodierung)?

Ich habe den folgenden Code, der Objektbilder nicht anzeigen kann. Aber zeigt normale Bilder gut.

Mein Modell

class News(models.Model):
title-----------
image = models.ImageField(upload_to='images')
body------------

Kodierung von Vorlagen-Tags

from django import template
register = template.Library()
from ----.models import ---

def funct(num):
myobjects = News.objects.all()[:num]
return {'objects': myobjects}
register.inclusion_tag('news/template.html')(funct)

Vorlagencodierung

{% for object in objects %}
<li>{{ object.title }}</li>
<li><img src="{{ MEDIA_URL }}images/{{ object.image }}" alt="image" /></li>
<li>{{ object.body }}</p></li>
{% endfor %}

Dieser Code gibt alle variablen Informationen wie Titel und Textkörper in einer Liste aus, zeigt jedoch nicht das zugehörige Bild an. Ich habe zahlreiche Variationen dieses Codes ausprobiert, ohne Erfolg. Das ist seltsam, denn wenn ein Bild aus dem Bildordner auf folgende Weise aufgerufen wird

<img src="{{ MEDIA_URL }}images/star.jpg" />

Alles funktioniert einwandfrei. Die Probleme treten auf, wenn ein Modellbild aufgerufen wird. Jede Hilfe zur Behebung dieses Problems ist sehr willkommen

6voto

Daniel Roseman Punkte 565786

Dies hat nichts mit dem Tag für benutzerdefinierte Vorlagen zu tun. Wenn Sie sich den Quelltext der gerenderten Seite ansehen würden, würden Sie sehen, dass {{ object.image }} gibt nicht die URL für das Bild aus. Sie müssen die {{ object.image.url }}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X