Форма Django не отправляет файл через модальную форму
Я пытаюсь загрузить файл через форму внутри модала bootstrap.
request.POST
правильно показывает имя файла в QueryDict, но request.FILES
показывает пустой MultiValueDict.
Для сравнения я также попробовал другую версию формы, которая отображается на странице, которая, кажется, работает отлично.
В чем разница? Спасибо.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.0/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-KyZXEAg3QhqLMpG8r+8fhAXLRk2vvoC2f3B09zVXn8CA5QIVfZOJ3BCsw2P0p/We" crossorigin="anonymous">
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"></script>
</head>
<body>
<!-- UPLOAD FILE -->
<form action="." method='post' enctype="multipart/form-data">
{% csrf_token %}
{{ file_form.as_p }}
<input type="submit" value="Upload">
</form>
<!-- MODAL VERSION -->
<a href="#" type="button" class="btn" data-toggle="modal" data-target="#statusModal">
Modal
</a>
<div class="modal fade" id="statusModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel">UPLOAD FILE</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<form action =".?&status=status-update" enctype="multipart/form-data" method = "post">
<div class="modal-body">
{% csrf_token %}
{{ file_form.as_p }}
</div>
<div class="modal-footer">
<input class="btn green-button" type = "submit" value = "Send">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
</div>
</form>
</div>
</div>
</div>
</body>
</html>
views.py:
from django.shortcuts import render, redirect
from upload_file.forms import FileForm
from upload_file.models import File
def index(request):
if request.method == "POST":
print(request.POST)
print(request.FILES)
file_form = FileForm(request.POST, request.FILES)
if file_form.is_valid:
file_form.save()
return redirect('/upload_file/')
file_form = FileForm()
return render(request, 'upload_file/index.html', {
'file_form': file_form,
})