images from media file wont get displayed in django template

django, django-templates

Solution

Oh FFS....

aperently it's

MEDIA_URL = '/media/'

NOT

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

...despite `#'http://127.0.0.1:8000/media/'` being written right next to it

working img link looks like so:

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

you definitely need the:

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

in the url file also

Problem

I'm new to django and I've been playing around with uploading pictures then displaying them. ... well trying to display them. Whenever I try to display the image from a template, I just get the broken image link icon. I'm using the 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) ``` Right now I've just used the admin to upload images. And that seems to work fine, they go to where I expect But when I try to display them: template ``` <!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> ``` I get the broken icon for each one. The browser source code shows me: ``` <!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> ``` that makes sense, I only have one photo uploaded. and if I copy one of the hard links and put it into some other html file ...it works

Original source