Django - Image Upload

To upload image in server using Django perform the following code:

django-admin startproject imageupload
cd imageupload
python manage.py startapp appimage

settings.py
add 'appimage' in INSTALLED_APPS
add 'templates' in TEMPLATES
add:
MEDIA_ROOT = BASE_DIR/'media'
MEDIA_URL = '/media/' 
media folder will automatically created when you add image.

models.py
from django.db import models  
  
class Image(models.Model):  
    caption = models.CharField(max_length=200)  
    img = models.ImageField(upload_to='images')  
  
    def __str__(self):  
        return self.caption
		
Install the pillow library, which helps work with the images.
pip install Pillow

urls.py (app)
from django.urls import path
from . import views

urlpatterns = [
    path('image_upload', views.imageview, name = 'image_upload'),
    path('success', views.success, name = 'success'),
	path('view_images', views.displayimages, name='view_images'),
]

urls.py (project)
from django.contrib import admin
from django.urls import path,include
from django.conf import settings  
from django.conf.urls.static import static

urlpatterns = [
    path('admin/', admin.site.urls),
	path('', include('appimage.urls')),
]

if settings.DEBUG:  
    urlpatterns += static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT)  
	
	
views.py (app)
from django.http import HttpResponse
from django.shortcuts import render, redirect
from .forms import *

# Create your views here.
def imageview(request):
	if request.method == 'POST':
		form = ImageForm(request.POST, request.FILES)

		if form.is_valid():
			form.save()
			return redirect('success')
	else:
		form = ImageForm()
	return render(request, 'file.html', {'form' : form})

def success(request):
	return HttpResponse('successfully uploaded')
	
def displayimages(request):
	if request.method == 'GET':
		Images = Image.objects.all() 
		return render(request, 'file2.html',{'images' : Images})
		
forms.py (app)
from django import forms
from .models import *
  
class ImageForm(forms.ModelForm):
  
    class Meta:
        model = Image
        fields = ['caption', 'img']
		
python manage.py makemigrations
python manage.py migrate  

from .models import Image
# Register your models here.
admin.site.register(Image)