Django Rest框架批处理请求

Django Rest框架批处理请求,django,django-rest-framework,Django,Django Rest Framework,我正试图在Django Rest框架中创建一个批处理端点,这是本着Google的。为此,端点使用TokenAuthentication,并在必要时请求包含路径、方法和数据的json编码字典列表,如下所示: [ { "path": "/endpoint1", "method": "GET" }, { "path": "/endpoint2", "method": "GET" }, {

我正试图在Django Rest框架中创建一个批处理端点,这是本着Google的。为此,端点使用
TokenAuthentication
,并在必要时请求包含路径、方法和数据的json编码字典列表,如下所示:

[
    {
        "path": "/endpoint1",
        "method": "GET"
    },
    {
        "path": "/endpoint2",
        "method": "GET"
    },
    {
        "path": "/endpoint3",
        "method": "POST",
        "data": {
            "file": "<base64>"
        }
    }
]
[
    ...<other operations>...,
    {
        "response": {
            "status": 403,
            "data": {
                "detail": "CSRF Failed: CSRF cookie not set."
            }
        },
        "path": "/endpoint3",
        "method": "POST",
        "data": {
            "file": "<Base64>"
        }
    }
]
所有非批处理终结点使用相同的
autentication\u类
permission\u类
。我遇到的问题是,authentications头与分派的视图不同。也就是说,当发送文件(带有用户令牌)时,
/endpoint3
的常规响应是成功的响应:

{
    "id": "asdf",
    "name": "asdf.txt",
}
但批量运行时,结果如下所示:

[
    {
        "path": "/endpoint1",
        "method": "GET"
    },
    {
        "path": "/endpoint2",
        "method": "GET"
    },
    {
        "path": "/endpoint3",
        "method": "POST",
        "data": {
            "file": "<base64>"
        }
    }
]
[
    ...<other operations>...,
    {
        "response": {
            "status": 403,
            "data": {
                "detail": "CSRF Failed: CSRF cookie not set."
            }
        },
        "path": "/endpoint3",
        "method": "POST",
        "data": {
            "file": "<Base64>"
        }
    }
]
[
......,
{
“答复”:{
“状态”:403,
“数据”:{
“详细信息”:“CSRF失败:未设置CSRF cookie。”
}
},
“路径”:“/endpoint3”,
“方法”:“发布”,
“数据”:{
“文件”:”
}
}
]

我是否将标题直接传递给我正在发送的新请求?

你知道CSRF的意思,不是吗?@我想是的。我忘了在decorator中添加
SessionAuthentication
,我编辑了问题以添加所需的所有decorator。但是,无论我使用的是常规端点还是批处理端点OK,它都不会做出不同的响应,因此您对视图的调用首先由
CsrfViewMiddleware
按下,它可以保护您免受跨站点引用攻击。如果你想对测试程序禁用此保护,只需将
\u don\u conforce\u csrf\u checks
cookie设置为
True
。我想问题可能就出在
copy
:P如果你使用
深度复制
,你会得到什么结果?因为中间件正在检查request.META,它可能会丢失所需的值。@当心类型错误:无法序列化'\u io.BufferedReader'对象。我想这些文件不能被深度复制。