Bilder aus der Mediendatei werden nicht in der Django-Vorlage angezeigt

Ich bin neu in Django und habe damit gespielt, Bilder hochzuladen und sie dann anzuzeigen. ... Gutversuchen um sie anzuzeigen.

Immer wenn ich versuche, das Bild aus einer Vorlage anzuzeigen, wird nur das Symbol für einen fehlerhaften Bildlink angezeigt.

Ich benutze den 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

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

Im Moment habe ich nur den Admin benutzt, um Bilder hochzuladen. Und das scheint gut zu funktionieren, sie gehen dorthin, wo ich es erwarte

Aber wenn ich versuche, 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 bekomme für jeden das kaputte Symbol.
Der Quellcode des Browsers 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 macht sinn, ich habe nur ein foto hochgeladen.
und wenn ich einen der harten links kopiere und ihn in eine andere html datei lege ... funktioniert es

Antworten auf die Frage(2)

versuchen Sie Folgendes:

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>.*)

HTML-Ansichtsdatei * .html:

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

Das heißt, wir haben eineimg Ordner im statischen Ordner. In Ihrem Fall können Sie dies ändern durch

Wenn Sie Ihren Browser sehen, muss HTML so aussehen:

<img src="/static/img/content_top_edit_form.png">
,'django.views.static.serve', {'document_root': os.path.join(SITE_ROOT, 'static')}) )

HTML-Ansichtsdatei * .html:

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

Das heißt, wir haben eineimg Ordner im statischen Ordner. In Ihrem Fall können Sie dies ändern durch

Wenn Sie Ihren Browser sehen, muss HTML so aussehen:

<img src="/static/img/content_top_edit_form.png">
 Ben28. Mai 2012, 07:45
Hey, danke für deine Antwort. Ich habe es versucht und es scheint immer noch nicht zu funktionieren
Lösung für das Problem

Aperent ist es

MEDIA_URL = '/media/'

NICHT

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

...Trotz#'http://127.0.0.1:8000/media/' direkt daneben geschrieben

Der img Link sieht so aus:

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

Sie brauchen auf jeden Fall die:

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

in der url datei auch

Ihre Antwort auf die Frage