Looking for django Keywords? Try Ask4Keywords

Django Datei-Uploads mit Django-Formularen


Beispiel

Zunächst müssen wir MEDIA_ROOT und MEDIA_URL unserer Datei settings.py hinzufügen

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

Auch hier werden Sie mit ImageField arbeiten. ImageField in solchen Fällen daran, die Pillow-Bibliothek ( pip install pillow ) zu pip install pillow . Andernfalls haben Sie einen solchen Fehler:

ImportError: No module named PIL

Kissen ist eine Abzweigung von PIL, der Python Imaging Library, die nicht mehr gepflegt wird. Kissen ist rückwärtskompatibel mit PIL.

Django enthält zwei Formularfelder, um Dateien auf den Server hochzuladen, FileField und ImageField . Im Folgenden finden Sie ein Beispiel für die Verwendung dieser beiden Felder in unserem Formular

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>