jquery - 当 jquery ajax 发布带有 processData=false 的 formdata 时,csrf_token 的 Django 响应 403 被拒绝

标签 jquery ajax django

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 时,我将面临两个问题:
如果我按照所有其他建议设置 processData: falsecontentType:false,Django 将拒绝此 POST 并显示 403 错误。

如果我注释掉将 processDatacontentType 设置为 false 的这两行,Jquery 将抛出 Uncaught TypeError:非法调用,这是另一个常见问题,解决方案是设置processData: falsecontentType:false。同时,包含文件的formdata已成功发送到Django并处理无误。

所以我很困惑,我应该怎么做才能将带有文件的表单数据发送到 Django

最佳答案

在您的 views.py 中,您应该将此装饰器放入函数中以处理 post 以防止 403:

from django.views.decorators.csrf import csrf_exempt

@csrf_exempt
def your_function(request):
    # your logic

关于jquery - 当 jquery ajax 发布带有 processData=false 的 formdata 时,csrf_token 的 Django 响应 403 被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27497145/

相关文章:

javascript - Ajax 表单提交

javascript - 无法为绝对定位图像的宽度设置动画

ruby-on-rails - Rails 远程链接处理为 JS,然后为 HTML

javascript - 无法更新 "data-attribute"值

javascript - "On"事件在带有动态添加元素的 IE8 中不起作用

php - 如何使用Check box实时更改MySql查询?

python - 删除未使用标签的更好方法。/django taggit python

python - Django 项目无法强制 Google Appengine 重定向到 https

javascript - 带有多个 slider 的 Bootstrap slider

jquery - 获取表中的td元素