当前位置: 首页 > 面试题库 >

例外:从请求的数据流读取后,您将无法访问正文

浦出野
2023-03-14
问题内容

在我的应用程序中,有时会通过表单发送数据,有时还会通过原始数据(例如json)发送数据。有什么办法可以编写像这样的不会失败的函数?

def get_post_var(request, name):
    result = request.POST.get(name)
    if result:
        return result

    post_body = dict(urlparse.parse_qsl(request.body))
    result = post_body.get(name)
    if result:
        return result

    return None

问题答案:

You cannot access body after reading from request's data stream如果(1)该请求方法为POST,(2)在中间件中的任一process_request或中,process_view并且(3)在视图功能内request.body被访问,则该请求的POST词典在中间件中访问时,将在请求上触发错误。即使错误的真正原因是(2),也会在(3)上引发错误。

为了解决该错误,你需要检查中间件访问的位置,request.POST并对其进行修改,以使其不再访问request.POST

Django文档说中间件不应该访问request.POST,这是忽略该建议的结果之一。

另请查看有关问题的Django票证,其中包括注释:

[m]点击request.POST的中间件(通常)应视为错误。这意味着该视图将无法设置任何自定义上传处理程序,执行请求正文的自定义解析或在接受文件上传之前强制执行权限检查。



 类似资料:
  • 在这里,我使用HttpClient发布JSON数据。但是我无法读取其他应用程序上的数据。当我执行时,它会返回null。我的两个应用程序都部署在同一台服务器上。请告诉我我做错了什么。谢谢

  • 我目前还不熟悉使用php和Laravel以及使用API,但我一直在学习Spotify php教程https://github.com/jwilsson/spotify-web-api-php. 我还大胆地提出了一些我想问的问题,希望有人能帮忙。 我已经完成了所有步骤,但需要帮助才能让它正常工作。 将下面的代码放在它自己的文件中,我们称之为auth。php。将CLIENT_ID和CLIENT_SEC

  • 我的Firebase函数https请求有问题。 此外,当我在后端时,它只显示..一个空的物体。 有什么想法为什么似乎不起作用吗?我也使用和来实现,但它们都返回到故障安全。

  • 我正在尝试从com包中的CSV文件中读取值。实例但当我使用以下语法运行代码时: 上面写着: java.io.FileNotFoundException: Dataset.csv 我也尝试过使用: 仍然不工作。任何帮助都会很有帮助。谢谢

  • 我是web开发的新手,我试图将一些JSON数据发送到运行express的node.js服务器,但是我得到了这个错误: 无法加载 http://localhost:8888/:在印前检查响应中,访问控制允许方法不允许使用方法 PUT。 我不知道这是什么意思。这是客户端获取: 这是服务器端代码: 服务器似乎甚至没有收到请求。我该怎么做?提前谢谢。