Skip to content Skip to sidebar Skip to footer

Include Image Files In Django Templates Shows Broken Link?

All, I've tried the tips found on the forum. Unfortunately i'm still stuck. The image doesn't appear in the template. As far as i've traced the errors now they are twofold: 1) on

Solution 1:

What's your template looking like? It's should be something like:

<img src="{{ MEDIA_URL }}Point3D/grafiek/laptop.jpg" alt="" />

I'm guessing the right path for your image should be http://127.0.0.1:8000/media/Point3D/grafiek/laptop.jpg


Solution 2:

Are you including {{ MEDIA_ROOT }} in your tag.

Also, make sure you are calling the template with a RequestContext object, because otherwise {{ MEDIA_ROOT }} will not be set in your template. Try using django.views.generic.simple.direct_to_template rather than django.shortcuts.render_to_response. Note that direct_to_template is called just like render_to_response except it takes request as the first argument.

from django.views.generic.simple import direct_to_template
# your view code here
return direct_to_template(request, 'path/to/template.html', **kwargs)

Solution 3:

Assuming media on your file system is at:

/home/username/django-project/media/images/favicon.ico

In your settings.py, you should have:

import os

PROJECT_PATH = os.path.dirname(__file__)
MEDIA_ROOT = os.path.join(PROJECT_PATH, 'media')
MEDIA_URL = '/media/'

TEMPLATE_CONTEXT_PROCESSORS = (
    'django.core.context_processors.media',
)

Your project urls.py should also contain the following which should only work in DEBUG mode:

if settings.DEBUG:
    urlpatterns += patterns('',
        url(r'^media/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT.replace('\\','/')}, name='media'),
    )

Your template should include media like the following:

<link rel="icon" href="{{ MEDIA_URL }}images/favicon.ico" />

Solution 4:

Permission denied on /media/ is exactly what is supposed to happen, as otherwise every user of you page could view all the files in that directory (Would be the same as configuring Apache to allow Indexing of a Directory, which is, in allmost al cases, not what you want. Try accessing the file in your browser by pasting the complete url, (and include the media url in your path!):

http://127.0.0.1:8000/media/Point3D/grafiek/laptop.jpg

If that does not work, make sure you have Django or Apache configured to serve the static files you try to access.

edit:
And one more thing that could cause your trouble: /media/ is the default for the admin media url. If your admin media url and your media url are the same thats no good. Change that so your MEDIA_URL and your ADMIN_MEDIA_PREFIX are not the same.


Post a Comment for "Include Image Files In Django Templates Shows Broken Link?"