Python Django Crud Web Application
Introduction
Django is a free, open-source framework for web applications written in Python. Django offers a large assortment of modules you can use in your projects. Firstly, there are frameworks to save developers a lot of time and headaches wasted, and Django is no different.
python django crud
In this post, we briefly cover the steps needed to create a CRUD app in Django; the steps we will need are:
• Install Django and start a new project
• Make an App
• Create the Model
• Make the Admin Interface (optional)
• Create the View
• Define the URLs (i.e., URL to View mapping)
• Create the Templates
Install Django and Start New Project
django-admin startproject my_proj cd my_proj
Create a New App
From the Django project directory, we will create a new app called “books” to store our books collection:
py manage.py startapp books
We will also need to register the new app in our Django project, add the app “books” to the INSTALLED_APPS in your my_proj/settings.py:
INSTALLED_APPS = ( : 'student', : )
Create the Model
The model file would be student/models.py:
from django.db import models
class Student(models.Model):
rollno = models.AutoField(primary_key=True)
fullname = models.CharField(max_length=30)
address = models.CharField(max_length=30)
email = models.CharField(max_length=30)
age = models.IntegerField()
des = models.CharField(max_length=30)
After defining the model, you need to provide it to the database:
py manage.py makemigrations py manage.py migrate
Admin Interface (Optional)
from django.contrib import admin from .models import student admin.site.register(student)
The Views
We will use Django Class-based views to create our app pages, hence, the file student/views.py would look like:
from django.shortcuts import render,redirect
from .models import Student
def SaveStudent(request):
if request.method=='GET':
return render(request,'index.html')
else:
fullname = request.POST['fulname']
address = request.POST['add']
email = request.POST['email']
age = request.POST['age']
designation = request.POST['des']
print(fullname, address, email, age, designation)
#Method 1, it is commented
# st = Student()
# st.fullname = request.POST['fulname']
# st.address = request.POST['add']
# st.age = request.POST['age']
# st.email = request.POST['email']
# st.des = request.POST['des']
# st.save()
#Method 2
stu = Student(fullname=fullname,address=address,email=email,age=age,des=designation)
stu.save()
return redirect('/students/list/')
def showstudentslist(request):
all_students = Student.objects.all()
context = {
'students':all_students
}
return render(request, 'stulist.html', context)
def deletestudents(request,id):
print(id)
student = Student.objects.get(rollno=id)
student.delete()
return redirect('/students/list/')
def updatestudents(request,id):
student = Student.objects.get(rollno=id)
context = {
'roll':student.rollno,
'fn': student.fullname,
'add': student.address,
'em': student.email,
'age': student.age,
'des': student.des
}
return render(request, 'update.html', context)
def updateprocess(request):
rollno = request.POST['roll']
fullname = request.POST['fulname']
address = request.POST['add']
email = request.POST['email']
age = request.POST['age']
designation = request.POST['des']
print(fullname, address, email, age, designation)
st = Student()
st.rollno = request.POST['roll']
st.fullname = request.POST['fulname']
st.address = request.POST['add']
st.age = request.POST['age']
st.email = request.POST['email']
st.des = request.POST['des']
st.save()
return redirect('/students/list/')
Define the URLs
We need to define app URLs in the file student/urls.py (create the file):
from django.urls import path
from student import views
urlpatterns = [
path('save/', views.SaveStudent),
path('list/', views.showstudentslist),
path('update/<int:id>', views.updatestudents),
path('update/', views.updateprocess),
path('delete/<int:id>', views.deletestudents),
]
Templates
For saving student details
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>Student Registration Form</h1>
<form action="/students/save/" method="post">
{% csrf_token %}
Full Name : <input name="fulname"><br>
Address : <input name="add"><br>
email : <input name="email"><br>
Age : <input name="age"><br>
Designation : <input name="des"><br>
<input type="submit" value="Save">
</form>
</body>
</html>
For Listing all student details
{% load static %}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<link rel="stylesheet" href="{% static 'style.css'%}" type="text/css">
</head>
<body>
<h1 class="stu">Student List</h1>
<table border="1">
<tr>
<th>Rollno</th>
<th>Fullname</th>
<th>Address</th>
<th>Email</th>
<th>Age</th>
<th>Action</th>
</tr>
{% for a in students %}
<tr>
<td>{{a.rollno}}</td>
<td>{{a.fullname}}</td>
<td>{{a.address}}</td>
<td>{{a.email}}</td>
<td>{{a.age}}</td>
<td><a href="/students/update/{{a.rollno}}">Update</a> |
<a href="/students/delete/{{a.rollno}}">Delete</a>
</td>
</tr>
{% endfor %}
</table>
{{msg}}
<a href="/accounts/logout/">logout</a>
</body>
</html>
For Updating student details
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>Student Registration Form</h1>
<form action="/students/update/" method="post">
{% csrf_token %}
<input type="hidden" name="roll" value="{{roll}}"><br>
Full Name : <input name="fulname" value="{{fn}}"><br>
Address : <input name="add" value="{{add}}"><br>
email : <input name="email" value="{{em}}"><br>
Age : <input name="age" value="{{age}}"><br>
Designation : <input name="des" value="{{des}}"><br>
<input type="submit" value="Save">
</form>
</body>
</html>
We hope you enjoyed the blog. We will be happy to hear your feedback. please visit www.vytcdc.com
0 Comment