In this article, we will know what Django CRUD application consists of and then later create our very own CRUD application.
What is a Django CRUD application?
A CRUD application is a website that deals with the CRUD-Create, Retrieve, Update, and Delete operations. A typical example of a CRUD application is a Student data application. In such applications, you can:
- Add/Create new Student data
- Retrieve the present student’s data
- Update/Edit an already student’s data
- Delete a student data
We will now learn about each of these operations

- Create: Create or add new entries into the database
- Retrieve: Get the entries/entry from the Database
- Update: Update a particular entry in the database
- Delete: Delete a particular entry from the database
Creating our own CRUD application in Django
Let us now create a simple Student Data CRUD application.
1. Creating a Model Table
To store the data, we need to create a Django model. Hence add the following model into your file.
class StudentModel(models.Model):
id = models.IntegerField(primary_key = True)
student_name = models.CharField(max_length=80)
rollnumber = models.CharField(max_length=10)
student_class = models.IntegerField()
student_age = models.IntegerField()
def __str__(self):
return f"{self.student_name} : {self.rollnumber}"
2. Creating a Model Form
Also we will require a Model Form to display the model fields to the users.
class StudentForm(forms.ModelForm):
class Meta:
model = StudentModel
fields = ('id','student_name','rollnumber','student_class','student_age')
3. Coding the Create View
In Views.py create the View “CreateView” and add the following code:
from .models import StudentModel
from .forms import StudentForm
from django.shortcuts import render,redirect
def CreateView(request):
if request.method == 'POST':
form = StudentForm(request.POST)
if form.is_valid():
form.save()
return redirect('/data')
else:
form =StudentForm()
context = {
'form':form
}
return render(request,'create.html',context)
The template “create.html” will look like:
<form method = "post">
{% csrf_token %}
{{form.as_p}}
<input type = "submit" value = "submit">
</form>
The URL path for the View will be:
path('data/create', CreateView),
4. Coding the Retrieve View
Now in the retrieve operation, there are two ways possible
- Display the all data list (Django List View)
- Display Only a particular data (Django Detail View)
Therefore, add both the following Views into your views.py file
from django.shortcuts import render,redirect
from .models import StudentModel
from .forms import StudentForm
def Retrieve_ListView(request):
dataset = StudentModel.objects.all()
return render(request,'listview.html',{'dataset':dataset})
def Retrieve_DetailView(request,_id):
try:
data =StudentModel.objects.get(id =_id)
except StudentModel.DoesNotExist:
raise Http404('Data does not exist')
return render(request,'detailview.html',{'data':data})
The Corresponding ListView template will be:
{% for data in dataset %}
{{data}}
<hr>
{% endfor %}
The Corresponding DetailView template will be:
<h3>Name:{{data.student_name}}</h3><br>
<h3>Roll Number:{{data.rollnumber}}</h3><br>
<h3>Class:{{data.student_class}}</h3><br>
<h3>Age:{{data.student_age}}</h3><br>
<hr/>
The URL paths for the Views will be:
path('data/', Retrieve_ListView),
path('data/<int:_id>',Retrieve_DetailView),
5. Coding the Update View
Now add the following Update View into the views.py file
from django.shortcuts import render,redirect,get_object_or_404
from .models import StudentModel
from .forms import StudentForm
def UpdateView(request,_id):
try:
old_data = get_object_or_404(StudentModel,id =_id)
except Exception:
raise Http404('Does Not Exist')
if request.method =='POST':
form =StudentForm(request.POST, instance =old_data)
if form.is_valid():
form.save()
return redirect(f'/data/{_id}')
else:
form = StudentForm(instance = old_data)
context ={
'form':form
}
return render(request,'update.html',context)
The corresponding update.html template will look like:
<form method="post">
{% csrf_token %}
{{form.as_p}}
<input type="submit" value = "Update">
</form>
The URL path for the View will be:
path('data/<int:_id>/update', UpdateView),
6. Coding the Delete View
Now add the Delete View into your views.py file
def DeleteView(request,_id):
try:
data = get_object_or_404(StudentModel,id =_id)
except Exception:
raise Http404('Does Not Exist')
if request.method == 'POST':
data.delete()
return redirect('/data')
else:
return render(request, 'delete.html')
The corresponding delete.html will look like:
<form method="post">
{% csrf_token %}
Click YES to confirm
<input type = "submit" value="YES">
<a href='/data'>Cancel</a>
</form>
The URL path for the View will be:
path('data/<int:_id>/delete', DeleteView),
Implementing the Student’s App
That’s it with the coding part !! Now fire up the server and let’s go to “/data/create” endpoint

Hit submit and you will reach the “/data” page where the list of students is displayed.

Now try the “/data/1” endpoint

Okay guys !! lets us update the first entry. Go to “/data/1/update“

Make some changes and hit Update, you will be redirected to the Detail View Page of the particular student.
And lastly let’s try to delete the first student. Go to “/data/1/delete“

Hit YES and check, the particular student data will be removed from the DB.
Conclusion
That’s it, Coders!! This was all about CRUD applications. Do check out the Django REST API tutorial, which is the REST API version of a CRUD application.
See you in the next article!! Till then keep coding !!