user3395936
user3395936

Reputation: 681

How to render Image on the web page using path from DB in Django?

enter image description here So I am trying to display an image on the web page, i save the image path in the database as media/imagename and in my html page i am doing this :

{% for stuff in profile %}
    <div class="alert alert-success" role="alert"> {{ stuff.text }} </div>

    <img scr='/Users/Username/PycharmProjects/social-django-1.9/mysite/media/media/{{ stuff.thumbnail }}' width="200">

{% endfor %}

And in my settings.py i do this:

MEDIA_ROOT = os.path.join(PROJECT_ROOT, '/Users/Username/PycharmProjects/social-django-1.9/mysite/media/media')

But the image doesn't display. What am i doing wrong here? Thanks!

Edit:

#urls.py
 from django.conf.urls import patterns, url
 from django.conf import settings

 from social import views


 urlpatterns = [


# main page
url(r'^$', views.index, name='index'),
# signup page
url(r'^signup/$', views.signup, name='signup'),
# register new user
url(r'^register/$', views.register, name='register'),
# login page
url(r'^login/$', views.login, name='login'),
# user doesnt exist webpage
url(r'^user-doesnt-exist/$', views.login, name='user-doesnt-exist'),
#page to show that the password is incorrect
url(r'^wrongpass/$', views.login, name='wrongpass'),
#webpage to show an error when a user tries to input nothing in the fields when signing up
url(r'^novalues/$', views.register, name='novalues'),
# logout page
url(r'^logout/$', views.logout, name='logout'),
# members page
url(r'^members/$', views.members, name='members'),
#invites page
url(r'^invites/$', views.invites, name='invites'),
# friends page
url(r'^friends/$', views.friends, name='friends'),
# user profile edit page
url(r'^profile/$', views.profile, name='profile'),
# messages page
url(r'^messages/$', views.messages, name='messages'),
# Ajax: check if user exists
url(r'^checkuser/$', views.checkuser, name='checkuser'),
#commiting again


]


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

Upvotes: 2

Views: 521

Answers (1)

Curtis Olson
Curtis Olson

Reputation: 967

Try setting your MEDIA_ROOT to:

MEDIA_ROOT = os.path.join(BASE_DIR, 'social/static/social/media')

MEDIA_URL = '/media/'

And in your project urls.py file add:

from django.conf import settings
from django.conf.urls import patterns

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

Then, in your template call the image like:

{% if stuff.thumbnail %}
    <img src="{{ object.thumbnail.url  }}">
{% endif %}

And in models.py:

image = models.ImageField(upload_to='images/')

Here's some great documentation on serving media files, including how to serve them during development.

Upvotes: 2

Related Questions