Javascript Django ajaxuploader 400错误请求

Javascript Django ajaxuploader 400错误请求,javascript,jquery,python,django,ajax-upload,Javascript,Jquery,Python,Django,Ajax Upload,Submitted.html JS还被document.ready函数包围 var uploader = new qq.FileUploader({ action: "{% url 'QCOMLTE:imager' %}", element: $('#file-uploader')[0], multiple: true, onComplete: function(id, fileName, respo

Submitted.html JS还被document.ready函数包围

var uploader = new qq.FileUploader({
            action: "{% url 'QCOMLTE:imager' %}",
            element: $('#file-uploader')[0],
            multiple: true,
            onComplete: function(id, fileName, responseJSON) {
                if(responseJSON.success) {
                    alert("success!");
                } else {
                    alert("upload failed!");
                }
            },
            onAllComplete: function(uploads) {
                // uploads is an array of maps
                // the maps look like this: {file: FileObject, response: JSONServerResponse}
                alert("All complete!");
            },
            params: {
                'csrf_token': "{{  csrf_token }}",
                'csrf_name': 'csrfmiddlewaretoken',
                'csrf_xname': 'X-CSRFToken'
            }
        });
html正文中的其他位置

<div id="file-uploader">
    <noscript>
        <p>Please enable JavaScript to use file uploader.</p>
    </noscript>
</div>
在已安装的应用程序列表中还包含“ajaxuploader”

当我尝试通过按钮提交文件时,它会发送post调用,但收到400(错误请求)错误。 据我所知,它甚至还没有到达python,至少不是视图代码。它似乎正确地形成了请求URL

http://localhost:8000/QCOMLTE/uploader?qqfile=powered_by.png
当您转到URL时,它会发送一条消息,说明只允许post调用。 这类似于 除了我没有使用任何后端,只是尝试获取文件并将其保存到一个目录

14年8月25日更新: 从视图中删除装饰器。这将导致无法发送错误。打印请求后,很明显文件被发送到GET路径而不是文件路径。我不知道如何改变这个

找到这个之后

我在前面尝试并模拟它,发现文件和POST请求实际上正在进行,这与我使用的ajax/jquery不同。JQuery是

       $('#uploadform').submit(function (e){
            console.log('submitting')
            var data = new FormData($('#uploadform').get(0));

            $.ajax({
                type: 'POST',
                url: "{% url 'QCOMLTE:imager' %}",
                data: data,
                success: function(data){console.log(data)},
                error: function(data){console.log(data)},
                cache: false,
                processData: false,
                contentType: false
            });
            e.preventDefault()
        });
除了类型低于URL之外。 我尝试将其更改为$.post请求,但它试图将其发布到错误的URL,然后。。。 所以我决定把它改回去,这次把类型放在ajax调用的顶部。然后成功了。。。经过大量测试后仍然如此

http://localhost:8000/QCOMLTE/uploader?qqfile=powered_by.png
       $('#uploadform').submit(function (e){
            console.log('submitting')
            var data = new FormData($('#uploadform').get(0));

            $.ajax({
                type: 'POST',
                url: "{% url 'QCOMLTE:imager' %}",
                data: data,
                success: function(data){console.log(data)},
                error: function(data){console.log(data)},
                cache: false,
                processData: false,
                contentType: false
            });
            e.preventDefault()
        });