Bien démarrer avec Django

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>
Retour en haut