formdata = new FormData($form);
case ("filesystem"):
$.ajax({
type:"POST",
url:$form.attr('action'),
xhr: xhr_provider,
data: formdata,
processData: false,
contentType:false
})
.fail(function(Response){alert(Response.responseText)})
.done(function(response){
alert("111");
if (response.has_errors){
render_errors($form, response);
} else {
$form.closest(".modal").modal("hide");
}
});
alert("12345");
break;
formdata
を含むファイルをDjangoに送信しようとすると、2つの問題が発生します。
他のすべての提案どおりに
processData: false
および
contentType:false
を設定すると、DjangoはこのPOSTを403エラーで拒否します。
processData
と
contentType
を
false
に設定するこれらの2行をコメント化すると、Jqueryは
Uncaught TypeError: Illegal invocation
をスローします。これは、別の一般的な質問であり、解決策はset
processData: false
と
contentType:false
です。一方、ファイルを含むフォームデータはDjangoに正常に送信され、エラーなく処理されました。
それで私は混乱しました、ファイル付きのフォームデータをDjangoに送信するにはどうすればよいですか
views.py
では、403を防ぐために、このデコレータを関数に配置してpostを処理する必要があります。
from django.views.decorators.csrf import csrf_exempt
@csrf_exempt
def your_function(request):
# your logic