Looking for django Keywords? Try Ask4Keywords

Django Filuppladdningar med Django-formulär


Exempel

Först måste vi lägga till MEDIA_ROOT och MEDIA_URL i vår settings.py fil

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

Även här kommer du att arbeta med ImageField , så kom ihåg att i sådana fall installera Pillow-bibliotek ( pip install pillow ). Annars kommer du att ha ett sådant fel:

ImportError: No module named PIL

Kudde är en gaffel från PIL, Python Imaging Library, som inte längre underhålls. Kudden är bakåtkompatibel med PIL.

Django kommer med två formfält för att ladda upp filer till servern, FileField och ImageField , följande är ett exempel på att använda dessa två fält i vår form

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>