загрузка нескольких файлов с помощью django и отображение списка загруженных файлов - PullRequest
0 голосов
/ 23 мая 2019

Я пытаюсь загрузить несколько файлов, используя django.При отправке формы после выбора нескольких файлов страница перезагружается с сообщением «это поле обязательно для заполнения», и файлы не загружаются.

models.py

from django.db import models

# Create your models here.

class Document(models.Model):
    title = models.CharField(max_length=255, blank=True)
    file = models.FileField(upload_to='docs/')

forms.py

from django import forms    

from .models import Document


class DocumentForm(forms.ModelForm):
    file = forms.FileField(widget=forms.ClearableFileInput(attrs={'multiple': True}))

    class Meta:
        model = Document
        fields = ('file', )

views.py

def main(request):
    documents = Document.objects.all()
    if request.method == "POST":
        form = DocumentForm(request.POST and request.FILES)
        if form.is_valid():
            files = request.FILES.getlist('file')
            for f in files:
                f.save()
    else:
        form = DocumentForm()

    return render(request, 'main.html', {'form':form, 'documents':documents})

urls.py

urlpatterns = [
    path('', views.home, name='home'),
    path('main/', views.main, name='main'),
    path('admin/', admin.site.urls),
]

main.html

 <form method="POST">
                {% csrf_token %}
                {{form.as_p}}
                <input class="btn btn-primary" type="submit" name="" value="SUBMIT">
        </form>
        <table id="gallery" class="table table-bordered">
                <thead>
                  <tr>
                    <th>Documents</th>
                  </tr>
                </thead>
                <tbody>
                  {% for document in documents %}
                    <tr>
                      <td><a href="{{ document.file.url }}">{{ document.file.name }}</a></td>
                    </tr>
                  {% endfor %}
                </tbody>
              </table>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...