Des application web avec python, Django est un framework web Python qui répond parfaitement à vos besoin. Nous allons présenter une premier prise en main. Depuis la préparation de l’environnement, la création d’un projet suivi d’un exemple de prévisualisation d’un fichier csv.
Prérequis
Installation à faire pour celui qui débute avec python
$ apt install python3
$ apt install python3-pip
Création d’un nouveau projet
Une des raisons pour laquelle ça fait toujours plaisir de travailler sur un framework: la présence des lignes de commande qui te facilite la tâche. Nous allons créer un projet puis lancer un serveur de dev embarqué, encore pour vous facilité la vie.
$ django-admin startproject mon_projet
$ cd mon_projet
$ python manage.py runserver
Création d’une nouvelle application
Toujours en ligne de commande dans le dossier racine du projet. Créons sans plus tarder l’application qui va nous permettre de prévisualiser un fichier csv:
$ python manage.py startapp csv_preview
$ pip install pandas
Après la création de l’application, on définit une route. Une correspondance permettant à Django de savoir quelle fonction il doit appeler répondre une requête http. On adore s’amuser avec les jargons, si on va utiliser les vocabulaires propres à notre framework: cela revient à lier un url à un view. La définition est à mettre dans urls.py, et les fonctions de rendu dans views.py. Ce dernier passe les infos dans un template, c’est notre troisième fichier pour la présente cas d’implémentation.
#urls.py
from django.contrib import admin
from django.urls import path
from csv_preview import views
urlpatterns = [
path('admin/', admin.site.urls),
path('', views.preview_csv),
]
#views.py
import pandas as pd
from django.shortcuts import render
from django.http import HttpResponse
def preview_csv(request):
file_path = 'path/data.csv' # Soloy ny lalana
try:
df = pd.read_csv(file_path)
# Ny dimy volohany ihany ro ilako
preview_data = df.head(5).to_html(classes='table table-striped')
return render(request, 'csv_preview.html', {'preview_data': preview_data})
except FileNotFoundError:
return HttpResponse("Fichier CSV non trouvé.")
except pd.errors.EmptyDataError:
return HttpResponse("Le fichier CSV est vide.")
except pd.errors.ParserError:
return HttpResponse("Erreur de format dans le fichier CSV.")
except Exception as e:
return HttpResponse(f"Une erreur s'est produite : {e}")
#csv_preview.html
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Aperçu CSV</title>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
</head>
<body>
<div class="container">
<h1>Aperçu du fichier CSV</h1>
<!-- Eto ny tableau ndrika -->
<div class="table-responsive">
{{ preview_data|safe }}
</div>
</div>
</body>
</html>