Filepond с Django возвращает пустой список файлов

Я пытаюсь использовать файловый пруд с моим Django, но после предварительного просмотра изображений они отображаются зеленым цветом, и я вижу запрос POST, после нажатия кнопки отправки в моей форме, когда я печатаю request.files, он возвращает пустой список.

Это мое представление Django:

@login_required
def post_create(request):
    data = dict()
    if request.method == 'POST':
        form = PostForm(request.POST)
        if form.is_valid():  
            post = form.save(False)
            post.author = request.user
            post.save()
            if request.FILES is not None:
                images = request.FILES.getlist('filepond')
                print(images)
                for i in images:
                    image_instance = Images.objects.create(image=i,post=post)
                    image_instance.save()
            data['form_is_valid'] = True
            data['post'] = render_to_string('home/posts/new_post.html',{'post':post},request=request)
        else:
            data['form_is_valid'] = False
    else:
        form = PostForm      
    context = {
    'form':form,
    }
    data['html_form'] = render_to_string('home/posts/post_create.html',context,request=request)
    return JsonResponse(data) 

И это мой HTML со скриптом:

<form method="POST" data-url="{% url 'home:post-create' %}" class="post-create-form" enctype="multipart/form-data">
    {% csrf_token %}
        <div class="modal-header text-center">
            <h5 class="modal-title col-12 text-center">Create a Post
            <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                <span aria-hidden="true">&times;</span>
            </button>
        </h5>
        </div>
    <div class="modal-body" style="height:400px;overflow-y: auto; margin:0;">
        {{ form|crispy }}
        <div class="pt-3" style="margin-bottom: -100px !important;">
            <input type="file" class="filepond" accept="image/*">
        </div>


    </div>
    <div class="modal-footer col-12" style="margin-top: -20px;">
        <button type="submit" class="btn btn-primary"  style="border-radius: 20px; width: 100%;">Post</button>
    </div>
</form>
<script>
    $.fn.filepond.registerPlugin(
        FilePondPluginImagePreview,
        FilePondPluginImageCrop,
        FilePondPluginImageEdit,
        FilePondPluginImageEdit,
        FilePondPluginFileValidateType,
        );
    $(function () {
        var csrf_token="{{ csrf_token }}";
        $('.filepond').filepond({
            allowMultiple: true,
            className: "d-flex",
            maxFiles: 4,
            allowFileTypeValidation: true,
            acceptedFileType:['image/png', 'image/jpeg'],
            dropOnPage: true,
            server: {
            process: {
                headers: {"X-CSRFToken":csrf_token,},
                url: '/home/post/create/',
                method: 'POST',
            },
            revert: {
                headers: {
                "X-CSRFToken":csrf_token,
                },
                url: '/home/post/create/',
                method: 'DELETE',
            },
            fetch: null,
            load: null,
            },
            labelIdle: '<span class="filepond--label-action">Add Photos</span>',
            imagePreviewHeight: 250,

        });
    })
</script>

Что вызывает эту проблему, поскольку я вижу загружаемые файлы и устанавливаю URL-адрес сервера, который обрабатывает запрос POST, как я могу это исправить? Я уже пробовал переименовать поле ввода, но при печати файлов в Django ничего не возвращается.


person ashes999    schedule 12.05.2020    source источник


Ответы (1)


Файлы уже загружены. Вы не получите другой список файлов, вы получите массив идентификаторов файлов (идентификатор, возвращаемый этой конечной точкой '/home/post/create/).

Затем вы можете переместить файлы из временного каталога, куда конечная точка процесса должна поместить файлы, в более окончательное расположение.

person Rik    schedule 28.05.2020