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.
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