Le stockage d’images avec Django peut être réalisé par plusieurs moyens. Pour commencer, Django offre une classe spéciale pour le stockage des fichiers image appelée `ImageField`.
Dans votre fichier `models.py`, vous pouvez définir un champ pour stocker des images comme suit:
```
from django.db import models
class MonModel(models.Model):
image = models.ImageField(upload_to=‘images/’)
```
Ici, `upload_to` spécifie le sous-répertoire dans lequel l’image sera stockée. Notez que vous devez avoir installé la bibliothèque Pillow pour utiliser ImageField.
En utilisant ce modèle, lorsque vous téléchargerez une image à l’aide d’un formulaire, Django la sauvegardera automatiquement dans le dossier spécifié et stockera le chemin d’accès à cette image dans la base de données.
Pour télécharger des images à partir d’un formulaire, vous pouvez définir un `ModelForm` pour votre modèle qui inclut le champ ImageField:
```
from django import forms
from .models import MonModel
class UploadImageForm(forms.ModelForm):
class Meta:
model = MonModel
fields = (‘image’, )
```
Ensuite, dans votre vue, vous pouvez gérer le formulaire d’envoi d’image:
```
from django.shortcuts import render
from .forms import UploadImageForm
def upload_image(request):
if request.method == ‘POST’:
form = UploadImageForm(request.POST, request.FILES)
if form.is_valid():
form.save()
else:
form = UploadImageForm()
return render(request, ‘upload.html’, {‘form’: form})
```
Notez ici que nous passons `request.FILES` au formulaire. Ceci est nécessaire car il contient les fichiers téléchargés fournis dans la requête.
Enfin, vous pouvez créer un template HTML pour le formulaire de chargement d’image:
```
Notez que l’attribut `enctype` est défini sur `multipart/form-data`. Cela est nécessaire lorsque vous envoyez un formulaire avec un téléchargement de fichier.
Ce processus est expliqué plus en détail dans la documentation de Django sur le traitement des fichiers téléchargés (https://docs.djangoproject.com/fr/3.2/topics/files/).
Si vous souhaitez stocker vos images sur un service de stockage en nuage comme Amazon S3, vous pouvez utiliser des bibliothèques comme django-storages (https://django-storages.readthedocs.io/en/latest/).
Sources utilisées pour la réponse:
- Documentation Django: https://docs.djangoproject.com/fr/3.2/topics/files/
- Documentation Django Storages: https://django-storages.readthedocs.io/en/latest/