Looking for django Keywords? Try Ask4Keywords

Django Przesyłanie plików za pomocą formularzy Django


Przykład

Przede wszystkim musimy dodać MEDIA_ROOT i MEDIA_URL do naszego pliku settings.py

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

Również tutaj będziesz pracować z ImageField , więc pamiętaj, w takich przypadkach zainstaluj bibliotekę Pillow ( pip install pillow ). W przeciwnym razie wystąpi taki błąd:

ImportError: No module named PIL

Poduszka to rozwidlenie biblioteki PIL, Python Imaging Library, która nie jest już utrzymywana. Poduszka jest wstecznie kompatybilna z PIL.

Django zawiera dwa pola formularza do przesyłania plików na serwer, FileField i ImageField , poniżej znajduje się przykład użycia tych dwóch pól w naszym formularzu

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>