Skip to main content

Command Palette

Search for a command to run...

Working with Models and Views

Retrieving, Updating, and Deleting Data

Published
3 min read
Working with Models and Views
I

I am a versatile developer skilled in web development and data science. My expertise includes HTML, CSS, JavaScript, TypeScript, React, Python, Django, Machine Learning, and Data Analysis. I am currently expanding my knowledge in Java and its applications in software development and data science. My diverse skill set enables me to create dynamic web applications and extract meaningful insights from data, driving innovative solutions.

Introduction

In this blog, we'll dive deeper into working with models and views. We'll learn how to retrieve data from models, create parameterized URLs, build dynamic links to access and manipulate data, and perform CRUD operations (Create, Read, Update, Delete) using forms and views.

Let's explore these concepts through an example-driven approach.

Retrieving Data from Models

In Django, we can retrieve data from models using queryset methods like .all(), .filter(), and .get(). Let's demonstrate how to retrieve all instances of a model and display them in a template.

Step 1: Creating a Path and View Function

First, let's create a path in the urls.py file to map to a view function in the views.py file.

# urls.py

from django.urls import path
from . import views

urlpatterns = [
    path('example/', views.example_view, name='example'),
    path('example/<int:id>/', views.example_detail_view, name='example_detail'),
    path('create_example/', views.create_example_view, name='create_example'),
    path('delete_example/<int:id>/', views.delete_example_view, name='delete_example'),
]

Now, let's define the view function example_view in the views.py file to retrieve all instances of the ExampleModel model and pass them to a template.

# views.py

from django.shortcuts import render
from .models import ExampleModel

def example_view(request):
    examples = ExampleModel.objects.all()
    return render(request, 'example_template.html', {'examples': examples})

Step 2: Creating a Template

Next, let's create a template named example_template.html to display the retrieved data.

<!-- example_template.html -->

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Example Data</title>
</head>
<body>
    <h1>Example Data</h1>
    <ul>
        {% for example in examples %}
            <li>
                <a href="{% url 'example_detail' example.id %}">{{ example.name }}</a>
                - {{ example.description }}
                <form action="{% url 'delete_example' example.id %}" method="post">
                    {% csrf_token %}
                    <input type="submit" value="Delete">
                </form>
            </li>
        {% endfor %}
    </ul>
    <form action="{% url 'create_example' %}" method="post">
        {% csrf_token %}
        <input type="text" name="name" placeholder="Name">
        <input type="text" name="description" placeholder="Description">
        <input type="submit" value="Create">
    </form>
</body>
</html>

Step 3: Creating View Functions for CRUD Operations

Now, let's define view functions for creating and deleting instances of the ExampleModel model.

# views.py

from django.shortcuts import render, redirect, get_object_or_404
from .models import ExampleModel

def create_example_view(request):
    if request.method == 'POST':
        name = request.POST.get('name')
        description = request.POST.get('description')
        data = ExampleModel(name=name, description=description)
        data.save()
        return redirect('example')
    return render(request, 'create_example_template.html')

def delete_example_view(request, id):
    example = get_object_or_404(ExampleModel, id=id)
        example.delete()
        return redirect('example')

In these view functions:

  • create_example_view: Creates a new instance of ExampleModel using data from the POST request.

  • delete_example_view: Deletes the instance of ExampleModel with the specified ID.

Conclusion

In this blog post, we've explored how to retrieve data from models, create parameterized URLs, build dynamic links, and perform CRUD operations using forms and views in Django applications. By following these steps, you can effectively work with models and views to build dynamic web applications.

Stay tuned for the next blog, where we'll delve deeper into advanced techniques for managing data in Django applications.

Happy coding!

Building Web Applications with Django

Part 4 of 5

In this comprehensive blog series, dive deep into the world of Django as we explore the fundamentals of rendering HTML templates and harnessing the capabilities of Django's REST API framework.

Up next

Building a RESTful API

Creating and Consuming APIs