Search code examples
djangoimageimagefield

Display images in Django


I have a django app which allows users to submit an image with it. Right now my model looks like

class Posting(models.Model):
    title = models.CharField(max_length=150)
    images = models.ForeignKey(Image, null=True)

class Image(models.Model):
    img = models.ImageField(upload_to="photos/",null=True, blank=True)

and I am trying to display the images in my template however I cannot seem to get it to work. I have gone though countless stack overflow posts and haven't had any luck. In my template I have

{ for post in postings }
    <img src"{{ post.image.url }} #and many variations of this

however other seems to display the url. The url seems to always be blank. Any help would be greatly appreciated!


Solution

  • This is how i got it working.

    settings.py

    import os
    BASE_DIR = os.path.dirname(os.path.dirname(__file__))
    STATIC_URL = '/static/'
    
    STATICFILES_DIRS = (
        os.path.join(BASE_DIR, "static"),
    )
    
    MEDIA_ROOT = (
    BASE_DIR
    )
    
    
    MEDIA_URL = '/media/'
    

    models.py ...

    image = models.ImageField(upload_to='img')
    

    urls.py(project's)

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

    template (.html)

    <img src="{{ post.image.url }}" alt="img">