Django Ajax Загрузка формы с помощью изображения

Я использую Django + Ajax, и я пытаюсь отправить POST запрос для загрузки формы с изображением.
. Однако, я все еще получаю ошибку KeyError: 'file'

HTML форма (обратите внимание, что я добавил enctype="multipart/form-data"):

<form id="addProduct" method="post" enctype="multipart/form-data">
    <label class="form-label required-field" for="file">Image</label>
    <input class='form-control' id='file' name="file" type="file" accept="image/*" required/>
</form>

Javascript использует запросы AJAX:

$("#addProduct").on("submit", function (e) {
    e.preventDefault()
    var data = new FormData(this);

    $.ajax({
                url: '/admin/product/add/',
                data: data,
                type: 'post',
                success: function (response) {
                    var result = response.result

                    console.log(result)
                    if (result == false) {
                        alert("Add product failed")
                    }
                    else {
                        alert("Add product successfully")
                    }
                },
                cache: false,
                contentType: false,
                processData: false
    })
}

Django View - views.py:

class ProductAddPage(View):

    def post(self, request):
        img = request.FILES['file']

        try:
            #further processing
        except:
            traceback.print_exc()
            return JsonResponse({"result":False}, status=200, safe=False)
            
        return JsonResponse({"result":True}, status=200, safe=False)

Traceback:

Internal Server Error: /admin/product/add/
Traceback (most recent call last):
  File "D:\Codes\Django\env\lib\site-packages\django\utils\datastructures.py", line 84, in __getitem__
    list_ = super().__getitem__(key)
KeyError: 'file'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "D:\Codes\Django\env\lib\site-packages\django\core\handlers\exception.py", line 55, in inner
    response = get_response(request)
  File "D:\Codes\Django\env\lib\site-packages\django\core\handlers\base.py", line 197, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "D:\Codes\Django\env\lib\site-packages\django\views\generic\base.py", line 103, in view
    return self.dispatch(request, *args, **kwargs)
  File "D:\Codes\Django\env\lib\site-packages\django\contrib\auth\mixins.py", line 73, in dispatch
    return super().dispatch(request, *args, **kwargs)
  File "D:\Codes\Django\env\lib\site-packages\django\views\generic\base.py", line 142, in dispatch
    return handler(request, *args, **kwargs)
  File "D:\Codes\Django\draft\admin\views.py", line 346, in post
    img = request.FILES['file']
  File "D:\Codes\Django\env\lib\site-packages\django\utils\datastructures.py", line 86, in __getitem__
    raise MultiValueDictKeyError(key)
django.utils.datastructures.MultiValueDictKeyError: 'file'
Вернуться на верх