2017-11-13 2 views
1

Ich habe seit einigen Tagen mit diesem Problem zu kämpfen und kann es nicht alleine lösen. Ich arbeite an einer Blogseite. Der Post-View bei einer URL wie dies gemacht:Bildpfade in der Django-Ansicht beziehen sich auf das Verzeichnis anstelle von MEDIA_URL

domain.com/blog/specificpost/ 

Ich habe eine Imagefield in meinem Modell. Die Bilder werden korrekt hochgeladen und ich kann die Bilder an die richtigen URLs adressieren.

domain.com/media/asset.jpg 

In meinem settings.py Ich habe die Pfade Medien definiert. Wenn ich vom Admin aus auf die Bilddateien zugreife, funktionieren sie einwandfrei.

Beim Rendern der Ansicht des Posts wird der Bildpfad im DOM falsch wiedergegeben. Es ist:

domain.com/blog/media/asset.jpg 

es sein sollte:

domain.com/media/asset.jpg 

In meinem URLPATTERN Ich habe angefügt:

+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) 

und fügte hinzu, die entsprechenden Importe urls.py. Ich glaube, dass dieser Code die Dateien bei der Domain-Root während development dienen soll.

Ich habe alle Lösungen here versucht, aber die Bild-URLs relativ zum Verzeichnis immer noch rendern. Jede Hilfe, um mich auf den richtigen Weg zu setzen, wäre nützlich, vielen Dank.

Post-Vorlage:

{% extends "base.html" %} 

{% block journal_entry %} 
    <main class="content"> 
     <section class="photo"> 
      <img src="{{ object.image }}"> 
     </section> 
     <section class="entry"> 
      <section class="entry-content"> 
       {{ object.body|linebreaks }} 
      </section> 
      <section class="entry-meta"> 
       {{ object.created }}<span class="user-options"> • <a href="#">Delete</a></span> 
      </section> 
     </section> 
    </main> 
{% endblock %} 
+1

Können Sie die Vorlage Ihrer Ansicht hinzufügen? – MrName

+0

@MrName Hinzugefügt, danke. –

Antwort

2

Versuchen {{ object.image.url }} statt {{ object.image }} in Ihrer Vorlage.

+0

Das hat perfekt funktioniert. Habe nicht gemerkt, dass du mit der Ausgabe des ImageFields spezifisch sein musst. Ich wusste, dass es ein einfacher Fehler sein würde, konnte einfach nicht meinen Kopf herumlegen, was ich vermisste. Ich schätze die Hilfe, vielen Dank. –

+1

Keine Sorge, was passiert, wenn Sie das Feld selbst (anstelle des URL-Attributs) referenzieren, ist, dass es die Methode '__str__' der Klasse verwendet, die eine relative URI ist, im Gegensatz zum' url'-Feld ist eine vollständige URL. – MrName

Verwandte Themen