Looking for django Keywords? Try Ask4Keywords

Django Bestandsuploads met Django-formulieren


Voorbeeld

Allereerst moeten we MEDIA_ROOT en MEDIA_URL aan ons bestand settings.py

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

Ook hier werkt u met ImageField , dus onthoud in dergelijke gevallen dat u Pillow-bibliotheek pip install pillow ( pip install pillow ). Anders heb je een dergelijke fout:

ImportError: No module named PIL

Pillow is een vork van PIL, de Python Imaging Library, die niet langer wordt onderhouden. Kussen is achterwaarts compatibel met PIL.

Django wordt geleverd met twee formuliervelden om bestanden naar de server te uploaden, FileField en ImageField , het volgende is een voorbeeld van het gebruik van deze twee velden in ons formulier

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>