【问题标题】:Django middleware advised not to use request.POST why?Django 中间件建议不要使用 request.POST 为什么?
【发布时间】:2018-03-16 00:28:18
【问题描述】:

“在视图运行之前或在 process_view() 中访问中间件内部的 request.POST 将阻止在中间件之后运行的任何视图能够修改请求的上传处理程序,通常应该避免。”

这是来自 django 文档。首先,如果我只是阅读 POST,而不改变它,它怎么知道以及它如何阻止视图执行它的业务,其次,CsrfViewMiddleware 在这个意义上有什么不同?

【问题讨论】:

  • 如果您想询问有关文档的问题,链接到它们会很有帮助,这样人们就可以看到任何上下文(并确保它不是 12 年前的版本等)跨度>

标签: python django backend middleware


【解决方案1】:

警告来自this ticketthis


Django 目前懒惰地解析 POST 数据,但中间件可能会尝试在请求中访问 POST 并触发解析,即使函数本身从未接触 POST。


如果 POST 数据相当大,这会给机器带来很高的负载...


这意味着视图将无法设置任何自定义上传处理程序、执行请求正文的自定义解析或在文件上传被接受之前强制执行权限检查。

关于 CsrfViewMiddleware 的区别在docs 中的上述警告下方明确说明:

CsrfViewMiddleware ... 提供 csrf_exempt() 和 csrf_protect() 装饰器,它允许视图显式控制 CSRF 验证应该在什么时候进行 发生。

【讨论】:

    猜你喜欢
    • 2013-09-11
    • 2014-07-03
    • 2013-08-19
    • 2016-04-09
    • 2012-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多