Omonbude Emmanuel
Software Engineer
HTML/CSS/JAVASCRIPT
PYTHON
DJANGO/DJANGO REST FRAMEWORK
NODE JS
DOCKER, AWS, KUBERNATES
FIREBASE, PostgreSQL, MySQL,Mongo DB
FLUTTER
DART
ANGULAR
TYPESCRIPT

CSV Generation in django web framework

Omonbude Emmanuel | July 14, 2023, 3:16 p.m.

113

Introduction

In Django web applications, efficiently exporting data to a user-friendly format like CSV (Comma-Separated Values) is a common requirement. CSV files are widely compatible and can be easily opened and analyzed in spreadsheet applications. This blog post will guide you through various approaches for generating CSV files in your Django projects, providing step-by-step instructions and exploring different methods. We would be generating csv file from our model and downloading it.

Prerequisites
Before proceeding, ensure you have the following:

  1. Django Project: A Django project set up and running.

 

Step 1 : Create the model

Open your models.py file and write the following code

# models.py

from django.db import models

class Person(models.Model):
    name = models.CharField(max_length=100)
    age = models.IntegerField()
    email = models.EmailField()

    def __str__(self):
        return self.name
 

 

Step 2 run migrations

python3 manage.py makemigrations
python3 manage.py migrate


 

 

Step 3: Define the csv format in views.py

 

import csv
from django.http import HttpResponse
from .models import Person

def generate_csv(request):
    response = HttpResponse(content_type='text/csv')
    response['Content-Disposition'] = 'attachment; filename="data.csv"'

    fieldnames = ['Name', 'Age', 'Email']
    writer = csv.DictWriter(response, fieldnames=fieldnames)
    writer.writeheader()  # Write CSV header row

    # Query data from the Person model
    queryset = Person.objects.all()

    for person in queryset:
        writer.writerow({'Name': person.name, 'Age': person.age, 'Email': person.email})  # CSV data rows

    return response

 

Step4: Setup the url

# urls.py

from django.urls import path
from .views import generate_csv

urlpatterns = [
    path('generate-csv/', generate_csv, name='generate_csv'),
]

 

Step 5 : Integrate CSV Generation with Django Templates

<a href="{% url 'generate_csv' %}">Download CSV</a> 

 

Conclusion

Generating CSV files dynamically in the Django web framework allows you to export data from your applications effortlessly. By following the steps outlined in this guide and using the provided code examples, you can create custom views for generating CSV files and integrate them into your Django projects. Whether you need to export data from models, forms, or custom sources, Django provides robust tools and libraries for CSV generation,  

© 2024 Omonbude Emmanuel

Omonbude Emmanuel