Here’s a simple example of how I’m delivering images. Is there a better way?
# django_app/forms.py
from django.forms import ModelForm
from .models import Photo
class PhotoForm(ModelForm):
class Meta:
model = Photo
fields = ['image']
# django_app/models.py
from django.db import models
class Photo(models.Model):
image = models.ImageField(upload_to='photos/')
# django_app/views.py
from django.shortcuts import render, redirect
from .models import Photo
from .forms import PhotoForm
def upload(request):
context = dict( backend_form = PhotoForm())
if request.method == 'POST':
form = PhotoForm(request.POST, request.FILES)
if form.is_valid():
form.save()
return redirect('display')
return render(request, 'upload.html', context)
def display(request):
photos = Photo.objects.all() # Retrieve all photos from the database
return render(request, 'display.html', {'photos': photos})
<!-- django_app/templates/display.html -->
<body>
<h1 class="image-heading">Displayed Images</h1>
<div class="image-grid">
{% for photo in photos %}
<img src="{{ photo.image.url }}" alt="Image">
{% endfor %}
</div>
<div>
</body>