Upload des fichiers dans Django

1. A propos de l'upload de fichiers dans Django

L'upload de fichiers dans Django est un processus permettant aux utilisateurs de soumettre des fichiers depuis un navigateur web et de les envoyer au serveur Django. Django fournit des fonctionnalités intégrées pour gérer facilement l'upload de fichiers dans une application.

Voici une description générale de l'upload de fichiers dans Django :

  1. Configurer les paramètres : Tout d'abord, vous devez configurer les paramètres dans votre fichier de configuration Django (habituellement settings.py). Assurez-vous que la variable MEDIA_ROOT est définie pour spécifier le dossier où les fichiers téléchargés seront stockés, et que la variable MEDIA_URL est définie pour spécifier l'URL de base des fichiers téléchargés.
  2. Définir le modèle : Dans votre modèle Django, vous devez définir un champ FileField ou ImageField pour représenter le fichier à télécharger. Ces champs spécifient où le fichier sera stocké et permettent de valider le type de fichier et sa taille.
  3. Créer un formulaire : Vous devez créer un formulaire Django avec un champ de fichier (FileField) pour permettre aux utilisateurs de sélectionner un fichier à télécharger. Vous pouvez personnaliser le formulaire en ajoutant d'autres champs ou en définissant des validations supplémentaires.
  4. Gérer la vue : Dans votre vue Django, vous devez gérer le traitement de l'upload de fichiers. Vous pouvez utiliser le formulaire créé précédemment pour valider et enregistrer le fichier téléchargé dans votre modèle.
  5. Configurer les URL : Vous devez configurer les URL dans votre fichier urls.py pour lier l'URL de l'upload de fichiers à votre vue qui gère le traitement.
  6. Afficher les fichiers téléchargés : Vous pouvez créer une vue pour afficher les fichiers téléchargés, en utilisant le chemin du fichier stocké dans votre modèle pour générer une URL accessible.

En suivant ces étapes vous serez capable de mettre en place l'upload de fichiers dans une application Django.

2. Création de l'application

Dans ce tutoriel, nous allons traiter un petit exemple d'application CRUD (Create Update Delete) de gestion des étudiants. Commençons par créer:

  1. Un projet mysite: projet principal de l'application
  2. Une application nommée studentApp: qui sera utilisée pour l'upload des fichiers photos
  3. un répertoire nommé media: destiné à l'upload des photos des étudiants
  4. au niveau du fichier settings.py: enregistrons l'application

Maintenant votre site web possède la structure suivante:

upload django file

  • Configurons ensuite le répertoire media au niveau du fichier settigns.py en ajoutant les deux lignes de code suivantes:

3. Configuration des urls

Créons un fichier nommé urls.py au sein de l'application studentApp:

Remarque

la méthode student_home() doit être créer et codé au niveau du fichier studentApp/views.py. Nous allons nous en occuper par la suite.

Déclarons ensuite le fichier studentApp/urls.py au niveau du fichier principal des urls de l'application

Créons maintenant un fichier index.html à la racine du répertoire template qui va être destiné à afficher les données des étudiants:

Editons maintenant le fichier studentApp/views.py afin qu'il pointe vers le fichier du template mysite/template/index.html

Et maintenant si vous saisissez l'url:  http://127.0.0.1:8000/student/ dans votre navigateur vous obtenez la page d'accueil suivante:

upload file django sudent app

Mais afin de prendre en compte l'upload des fichiers nous devons:

  1. importer le module static
  2. importer le fichiers settings.py
  3. configuer le chemin ainsi que l'url du dossier media

Voici donc le code final du fichier mysite/urls.py

4. Création du modèle

Comme nous l'avons déjà mentionné ci-dessus, nous allons traiter l'exemple d'application CRUD pour gérer les étudiants. A cet effet, nous allons créer un modèle Student ayant pour attributs:

  1. name: nom de l'étudiant
  2. email: adresse email de l'étudiant
  3. phone: numéro de téléphone de l'étudiant
  4. section: spécialité ou section de l'étudiant
  5. photo: image de profile de l'étudiant

Le modèle sera donc codé de la façon suivante:

Le paramètre upload_to = 'photos' que nous avons ajouté, indique à django que les fichiers téléchargés doivent être enregistrer au sein du dossier media/photos.
NB: il n'est pas necessaire de créer manuellement ce répertoire ? Django le créera automatiquement lors d'exécution du script.

django uplod file model file field

Et maintenant pour générer la table SQLite contenant les champs précisés ci-dessus, il est nécessaire d'effectuer les migrations :
Pour ce faire, exécutez les commandes suivantes en ligne de commande :

puis :

Ces commandes permettent à Django de créer les migrations basées sur les modifications apportées aux modèle de votre application, puis d'appliquer ces migrations pour créer ou mettre à jour la structure de la base de données. Cela garantit que votre table SQLite est synchronisée avec la définition de votre modèle.

5. Création du formulaire

Nous allons maintenant créer un fichier urls.py au sein de l'application studentApp au sein duquel, nous créons une classe que nous allons nommer StudentFrom qui va hériter de la classe ModelForm et au sein de laquelle nous déclarons le modèle que la classe doit utiliser pour créer un formulaire sur mesure:

6. Création du view

Maintenant, le views va être créer en utilisant la classe StudentsForm en lui ajoutant les paramètres:

  1. request.POST: qui va récupérer les données textuels du formulaire
  2. request.FILES: qui va récuperer le fichier qui se trouve dans le champ photo du formulaire

7. Configuration du template

Finalement il nous reste à créer le formulaire au niveau du template. A cet effet, il suffit d'utiliser la variable form qui a été crée au niveau du views:

Et maintenant si on tape l'url: http://127.0.0.1:8000/student/ on obtient le formulaire d'enregistrement des étudiants doté d'un champ photo permettant de télécharger des fichiers photos de profiles des étudiants:

django uploa file photo profile student

8. Création d'une application CRUD de gestion des étudiants

Utilisons maintenant ce qui a été mentionné précédemment pour mettre en place un mini système de gestion des étudiants.
En se référant au paragraphe initial, toutes les modifications nécessaires sont mineures.

8.2 Modification au niveau du fichier studentApp/views.py

Au niveau du fichier studentApp/views.py, rien que l'ajout de la variable: 'data' : Students.objects.all() au sein de la méthode render():

8.2 Modification au niveau du fichier de template/index.html

Au niveau du fichier template/index.html, on ajoute uniquement l'affichage des champs nom, email, phone, section, photo...
Les données des étudiants y compris les photos, sont disponible au niveau du template et sont stockés dans la variable 'data' qu'on vient de créer au niveau du views:

Et maintenant en visitant la page student: http://127.0.0.1:8000/student/ on obtient un système de gestion des étudiant sous forme de CRUD application (Create Read Update Delete):

Student management system django CRUD App

 

2 ème partie: Ajout d'un système de pagination

 

Younes Derfoufi
CRMEF OUJDA

Leave a Reply

Your email address will not be published. Required fields are marked *