2012-05-27 12 views
6

Ich bin neu in Django und ich habe mit dem Hochladen von Bildern herumspielen und dann angezeigt. ... gut versucht, um sie anzuzeigen.Bilder aus Mediendatei werden nicht in Django Vorlage angezeigt

Immer, wenn ich versuche, das Bild von einer Vorlage anzuzeigen, erhalte ich nur das gebrochene Bild Link-Symbol.

Ich bin mit dem sqlite3 Server

settings.py

ROOT_DIR = os.path.dirname(os.path.dirname(__file__)) 
def location(f): 
    return os.path.join(ROOT_DIR, f) 
MEDIA_URL = 'http://127.0.0.1:8000/media/' 
MEDIA_ROOT = location('media/') 

models.py

class Image(models.Model): 
    image = models.ImageField(upload_to = 'images/') 

views.py

from imageupload.settings import MEDIA_ROOT, MEDIA_URL 

def main(request): 
    imgs = Image.objects.all() 
    return render_to_response('index.html', {'images': imgs, 'media_root': MEDIA_ROOT, 'media_url': MEDIA_URL}) 

url.py

Im Moment habe ich gerade den Admin verwendet, um Bilder hochzuladen. Und das scheint gut zu funktionieren, sie gehen, wo ich erwarten

Aber wenn ich versuche, um sie anzuzeigen:
Vorlage

<!DOCTYPE html> 
<html> 
    <img src="<correct path to project>/media/images/photo_1.JPG" /> 

    {% for img in images %} 
    <img src="{{ media_root }}{{ img.image.name }}" /> 
    <img src="{{ media_url }}{{ img.image.name }}" /> 
    <img src="{{ img.image.url }}" /> 
    {% endfor %} 
</html> 

ich das gebrochene Symbol für jeden.
Der Browser-Quellcode zeigt mir:

<!DOCTYPE html> 
<html> 
    <img src="<correct path to project>/media/images/photo_1.JPG" />  
    <img src="<correct path to project>/media/images/photo_1.JPG" />  
    <img src="http://127.0.0.1:8000/media/images/photo_1.JPG" /> 
    <img src="http://127.0.0.1:8000/media/images/photo_1.JPG" /> 
</html> 

das Sinn macht, habe ich nur hochgeladen ein Foto haben.
und wenn ich einen der harten Links kopieren und in eine andere HTML-Datei setzen ... es funktioniert

Antwort

11

Oh FFS ....

aperently es

MEDIA_URL = '/media/' 

NICHT

MEDIA_URL = 'http://127.0.0.1:8000/media/' 

...trotz #'http://127.0.0.1:8000/media/' wird sieht aus wie so

Arbeits img Link, um es direkt neben geschrieben: Ihre

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

in der URL Datei

0

, wenn Sie für die Anzeige Bilder in Entwicklungsumgebung suchen versuchen, dieses:

settings.py

SITE_ROOT = os.path.realpath(os.path.dirname(__file__)) 
MEDIA_ROOT = os.path.join(SITE_ROOT, 'static') 
MEDIA_URL = '/static/' 
STATIC_ROOT = os.path.join(SITE_ROOT, 'statics') 
STATIC_URL = '/statics/' 

urls.py

# somebody import this from settings 
SITE_ROOT = os.path.realpath(os.path.dirname(__file__)) 
urlpatterns += patterns('', 
    url(r'^static/(?P<path>.*)$','django.views.static.serve', 
     {'document_root': os.path.join(SITE_ROOT, 'static')}) 
) 

hTML-Ansicht Datei * .html:

<img src="{{ MEDIA_URL }}img/content_top_edit_form.png"> 

Dies bedeutet, dass wir einen img Ordner im statischen Ordner haben. in Ihrem Fall können Sie dies durch

ändern, wenn Sie Ihren Browser html sehen muss wie folgt zu sehen:

<img src="/static/img/content_top_edit_form.png"> 
+0

hey danke auch für:

<img src="/media/images/photo_1.JPG" /> 

Sie auf jeden Fall die Notwendigkeit Antwort. Ich habe es versucht und es scheint immer noch nicht zu funktionieren – Ben

Verwandte Themen