Django Téléchargement de fichiers avec les formulaires Django


Exemple

Tout d'abord, nous devons ajouter MEDIA_ROOT et MEDIA_URL à notre fichier settings.py

MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'

Ici aussi, vous travaillerez avec ImageField , donc souvenez-vous, dans ce cas, installez la bibliothèque Pillow ( pip install pillow ). Sinon, vous aurez une telle erreur:

ImportError: No module named PIL

Pillow est un fork de PIL, la bibliothèque de création d'images Python, qui n'est plus maintenue. L'oreiller est rétrocompatible avec PIL.

Django est livré avec deux champs de formulaire pour télécharger des fichiers sur le serveur, FileField et ImageField . Voici un exemple d'utilisation de ces deux champs dans notre formulaire.

forms.py:

from django import forms


class UploadDocumentForm(forms.Form):
    file = forms.FileField()
    image = forms.ImageField()

views.py:

from django.shortcuts import render
from .forms import UploadDocumentForm


def upload_doc(request):
    form = UploadDocumentForm()
    if request.method == 'POST':
        form = UploadDocumentForm(request.POST, request.FILES)  # Do not forget to add: request.FILES
        if form.is_valid():
            # Do something with our files or simply save them
            # if saved, our files would be located in media/ folder under the project's base folder
            form.save()
    return render(request, 'upload_doc.html', locals())

upload_doc.html:

<html>
    <head>File Uploads</head>
    <body>
        <form enctype="multipart/form-data" action="" method="post"> <!-- Do not forget to add: enctype="multipart/form-data" -->
            {% csrf_token %}
            {{ form }}
            <input type="submit" value="Save">
        </form>
    </body>
</html>