Django CRUD Application

Django CRUD application is a web application built using Django that allows users to perform the four essential database operations: CreateReadUpdate, and Delete. These operations are typically implemented to manage records in a database through Django’s ORM, views, forms, and templates.

Features of a Django CRUD Application

Create: Add new records using forms.

Read: Display records in a list or detail view.

Update: Edit existing records through forms.

Delete: Remove records with confirmation dialogs.

Components of a Django CRUD Application

1. Models (Database Layer)

Models define the structure of the data, serving as the link between your application and the database.

Example:


from django.db import models

class Item(models.Model):
    name = models.CharField(max_length=100)
    description = models.TextField()
    price = models.DecimalField(max_digits=10, decimal_places=2)

2. Views (Logic Layer)

Views handle the application’s logic and determine what data to send to templates. Django supports:

Function-based Views (FBVs) for simple logic.

Class-based Views (CBVs) like ListView, CreateView, UpdateView, and DeleteView for streamlined CRUD functionality.

Example of CBVs for CRUD:


from django.views.generic import ListView, CreateView, UpdateView, DeleteView
from .models import Item
from django.urls import reverse_lazy

class ItemListView(ListView):
    model = Item
    template_name = "item_list.html"

class ItemCreateView(CreateView):
    model = Item
    fields = ['name', 'description', 'price']
    template_name = "item_form.html"

class ItemUpdateView(UpdateView):
    model = Item
    fields = ['name', 'description', 'price']
    template_name = "item_form.html"

class ItemDeleteView(DeleteView):
    model = Item
    success_url = reverse_lazy('item-list')

3. Templates (Presentation Layer)

Templates render the HTML for the application’s user interface.

Example:


<h1>Item List</h1>
<ul>
    {% for item in object_list %}
        <li>{{ item.name }} - {{ item.price }}</li>
    {% endfor %}
</ul>
<a href="{% url 'item-create' %}">Add New Item</a>

4. URLs (Routing)

URL patterns map HTTP requests to specific views.


from django.urls import path
from .views import ItemListView, ItemCreateView, ItemUpdateView, ItemDeleteView

urlpatterns = [
    path('', ItemListView.as_view(), name='item-list'),
    path('create/', ItemCreateView.as_view(), name='item-create'),
    path('/update/', ItemUpdateView.as_view(), name='item-update'),
    path('/delete/', ItemDeleteView.as_view(), name='item-delete'),
]