article

Monday, April 13, 2020

Django CRUD (Create Read Update Delete) Example - Bootstrap Datatable


Django CRUD (Create Read Update Delete) Example - Bootstrap Datatable

CREATE TABLE employee (
id INTEGER PRIMARY KEY,
name STRING (100),
contact STRING (100),
email STRING (255)

);


models.py
 
#models.py
class Employee(models.Model):  
    name = models.CharField(max_length=100)  
    email = models.EmailField()  
    contact = models.CharField(max_length=15) 
 
    class Meta:  
        db_table = "employee" 
forms.py
 
#forms.py
from django import forms  
from myapp.models import Employee  
class EmployeeForm(forms.ModelForm):  
    class Meta:  
        model = Employee  
        fields = ['name', 'contact', 'email'] #https://docs.djangoproject.com/en/3.0/ref/forms/widgets/
        widgets = { 'name': forms.TextInput(attrs={ 'class': 'form-control' }), 
            'email': forms.EmailInput(attrs={ 'class': 'form-control' }),
            'contact': forms.TextInput(attrs={ 'class': 'form-control' }),
      }
views.py
 
#views.py
from django.shortcuts import render, redirect  
from myapp.forms import EmployeeForm  
from myapp.models import Employee  
# Create your views here.  
def addnew(request):  
    if request.method == "POST":  
        form = EmployeeForm(request.POST)  
        if form.is_valid():  
            try:  
                form.save()  
                return redirect('/')  
            except:  
                pass  
    else:  
        form = EmployeeForm()  
    return render(request,'index.html',{'form':form})  
def index(request):  
    employees = Employee.objects.all()  
    return render(request,"show.html",{'employees':employees})  
def edit(request, id):  
    employee = Employee.objects.get(id=id)  
    return render(request,'edit.html', {'employee':employee})  
def update(request, id):  
    employee = Employee.objects.get(id=id)  
    form = EmployeeForm(request.POST, instance = employee)  
    if form.is_valid():  
        form.save()  
        return redirect("/")  
    return render(request, 'edit.html', {'employee': employee})  
def destroy(request, id):  
    employee = Employee.objects.get(id=id)  
    employee.delete()  
    return redirect("/")  
urls.py
 
#urls.py
from django.contrib import admin  
from django.urls import path  
from myapp import views  
urlpatterns = [  
    path('admin/', admin.site.urls),  
    path('', views.index),  
    path('addnew',views.addnew),  
    path('edit/<int:id>', views.edit),  
    path('update/<int:id>', views.update),  
    path('delete/<int:id>', views.destroy),  
]  
templates/show.html
//templates/show.html
{% extends "base.html" %}

{% block title %}Employee Records{% endblock title %}

{% block content %}
 <div class="col-md-12">
        <h4>Django CRUD (Create Read Update Delete) Example - Bootstrap Datatable</h4> <span><a href="/addnew" class="btn btn-primary">Add New Record</a></span>  
        <div class="table-responsive">
  <table id="bootstrapdatatable" class="table table-striped table-bordered" width="100%">
            <thead>
                <th><input type="checkbox" id="checkall" /></th>
                <th>ID</th>
                <th>Employee Name</th>
                <th>Employee Email</th>
                <th>Employee Contact</th>
                <th>Edit</th>
                <th>Delete</th>
             </thead>
   <tbody>
   {% for employee in employees %}  
    <tr>  
     <td><input type="checkbox" class="checkthis" /></td>
     <td>{{ employee.id }}</td>  
     <td>{{ employee.name }}</td>  
     <td>{{ employee.email }}</td>  
     <td>{{ employee.contact }}</td>  
     <td><p data-placement="top" data-toggle="tooltip" title="Edit"><a href="/edit/{{ employee.id }}" class="btn btn-primary btn-xs" data-title="Edit" data-toggle="modal" data-target="#edit" ><span class="glyphicon glyphicon-pencil"></span></a></p></td>
     <td><p data-placement="top" data-toggle="tooltip" title="Delete"><a href="/delete/{{ employee.id }}" class="btn btn-danger btn-xs" data-title="Delete" data-toggle="modal" data-target="#delete" ><span class="glyphicon glyphicon-trash"></span></a></p></td>  
    </tr>  
   {% endfor %} 
   </tbody>
        
  </table>
        </div>
    </div>
{% endblock content %}
templates/base.html
//templates/base.html
<!DOCTYPE html>  
<html lang="en">  
<head>  
<meta charset="UTF-8">  
<title>{% block title %}{% endblock %}</title>
{% load static %}  
<link href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.0/css/bootstrap.min.css" rel="stylesheet" id="bootstrap-css">
<script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.0/js/bootstrap.min.js"></script>
<script src="http://code.jquery.com/jquery-1.11.1.min.js"></script>

<script src="https://cdn.datatables.net/1.10.16/js/jquery.dataTables.min.js"></script>
<script src="https://cdn.datatables.net/1.10.16/js/dataTables.bootstrap4.min.js"></script>
</head> 
<body>
<div class="container">
 <div class="row">
    {% block content %}{% endblock %}
 </div>
</div>
<script>
$(document).ready(function() {
    $('#bootstrapdatatable').DataTable({     
      "aLengthMenu": [[3, 5, 10, 25, -1], [3, 5, 10, 25, "All"]],
        "iDisplayLength": 3
       } 
    );
} );
</script>
</body> 
</html>
templates/index.html
//templates/index.html
{% extends "base.html" %}

{% block title %}Add New Employee Records{% endblock title %}

{% block content %}
<div class="col-md-12">
    <h4>Django CRUD (Create Read Update Delete) Example - Bootstrap Datatable</h4> 
        
 <form method="POST" class="post-form" action="/addnew">  
   {% csrf_token %}  
  <div class="container">  
 <br>  
  <div class="form-group row">  
  <label class="col-sm-1 col-form-label"></label>  
  <div class="col-sm-4">  
  <h3>Enter Details</h3>  
  </div>  
   </div>  
  
   <div class="form-group row">  
  <label class="col-sm-2 col-form-label">Employee Name:</label>  
  <div class="col-sm-4">  
    {{ form.name }}  
  </div>  
   </div>  
  <div class="form-group row">  
  <label class="col-sm-2 col-form-label">Employee Email:</label>  
  <div class="col-sm-4">  
    {{ form.email }}  
  </div>  
   </div>  
  <div class="form-group row">  
  <label class="col-sm-2 col-form-label">Employee Contact:</label>  
  <div class="col-sm-4">  
    {{ form.contact }}  
  </div>  
   </div>  
  <div class="form-group row">  
  <label class="col-sm-1 col-form-label"></label>  
  <div class="col-sm-4">  
  <button type="submit" class="btn btn-primary">Submit</button>  
  </div>  
   </div>  
  </div>  
 </form>  
</div> 
{% endblock content %} 
templates/edit.html
//templates/edit.html
{% extends "base.html" %}

{% block title %}Add New Employee Records{% endblock title %}

{% block content %}
<div class="col-md-12">
    <h4>Django CRUD (Create Read Update Delete) Example - Bootstrap Datatable</h4>  
 <form method="POST" class="post-form" action="/update/{{employee.id}}">  
   {% csrf_token %}  
  <div class="container">  
 <br>  
  <div class="form-group row">  
  <label class="col-sm-1 col-form-label"></label>  
  <div class="col-sm-4">  
  <h3>Update Details</h3>  
  </div>  
   </div>  
  <div class="form-group row">  
  <label class="col-sm-2 col-form-label">Employee Id:</label>  
  <div class="col-sm-4">  
   <input type="text" class="form-control" name="id" id="id_id" required maxlength="20" value="{{ employee.id }}"/>  
  </div>  
   </div>  
   <div class="form-group row">  
  <label class="col-sm-2 col-form-label">Employee Name:</label>  
  <div class="col-sm-4">  
   <input type="text" class="form-control" name="name" id="id_name" required maxlength="100" value="{{ employee.name }}" />  
  </div>  
   </div>  
  <div class="form-group row">  
  <label class="col-sm-2 col-form-label">Employee Email:</label>  
  <div class="col-sm-4">  
   <input type="email" class="form-control" name="email" id="id_email" required maxlength="254" value="{{ employee.email }}" />  
  </div>  
   </div>  
  <div class="form-group row">  
  <label class="col-sm-2 col-form-label">Employee Contact:</label>  
  <div class="col-sm-4">  
   <input type="text" class="form-control" name="contact" id="id_contact" required maxlength="15" value="{{ employee.contact }}" />  
  </div>  
   </div>  
  <div class="form-group row">  
  <label class="col-sm-1 col-form-label"></label>  
  <div class="col-sm-4">  
  <button type="submit" class="btn btn-success btn-lg">Update</button>  
  </div>  
   </div>  
  </div>  
 </form>  
{% endblock content %}   

Related Post