我正在使用Django REST框架构建一个API-first应用程序,所以它根本没有html视图,只使用基于令牌的身份验证。同时,我想使用Django管理界面,这是没有问题的,但我担心性能成本,因为它依赖于许多应用程序(会话,标准身份验证,消息,csrf等),这些应用程序在主应用程序中并不需要,但会在每个请求上运行。
有没有办法将特定于管理的中间件设置为仅在管理界面上运行?
我知道我可以将它们分成子类,并在除管理站点以外的所有请求上提高MiddlewareNotUsed,但也许有一些内置的或众所周知的解决方案?
发布于 2021-02-28 09:33:14
回答你的问题,不,我不认为有内置的解决方案来迎合这一点。但这可能是因为你的目的并不适合Django的设计和哲学。
我同意Sahil对此的评论。我曾经对性能也很偏执,但我意识到我低估了Django的速度(即使使用了所有这些基本的中间件),如果性能如此关键,我可能一开始就不应该使用Django。我猜禁用这些中间件最多只会节省应用程序的响应时间,不明显的毫秒数;不可避免的网络波动可能会更显著。开发人员的时间比在出现任何性能和/或可伸缩性问题时投入的额外硬件更昂贵。
但是,如果您仍然希望节省中间件处理,我有一个替代的想法: Django admin提供的便利功能(即CRUD操作)可以用DRF视图集非常快速地复制。也许您可以使用一些快速开发的前端框架为您的用户构建相应的API客户端。(我想说的是,只需使用DRF browsable API,但我记得这也依赖于与Django admin几乎相同的基本中间件。)
https://stackoverflow.com/questions/66403503
复制相似问题