Я пытаюсь использовать файловый пруд с моим 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">×</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 ничего не возвращается.