django - 带有 Django 管理员的 REST API
问题描述
我正在使用 Django REST 框架构建一个 API-first 应用程序,因此它根本没有 html 视图,并且只使用基于令牌的身份验证。同时,我想使用 Django 管理界面,这没问题,但我担心性能成本,因为它依赖于很多应用程序(会话、标准身份验证、消息、csrf 等)。 ),在主应用程序中不需要,但会在每个请求上运行。
有没有办法将特定于管理员的中间件设置为仅在管理界面上运行?
我知道我可以对它们进行子类化并在所有请求上引发 MiddlewareNotUsed ,但访问管理站点的请求除外,但也许有一些内置或众所周知的解决方案?
解决方案
要回答您的问题,不,我认为没有内置解决方案可以满足此要求。但这可能是因为您的目的不适合 Django 的设计和理念。
我同意 Sahil 对此的评论。我曾经对性能也很偏执,但我意识到我低估了 Django 的速度(即使有所有这些基本的中间件),如果性能如此关键,我可能一开始就不应该使用 Django。我猜禁用这些中间件最多只会节省应用程序的响应时间,而这只是微不足道的毫秒数;不可避免的网络波动甚至可能更为显着。开发人员的时间比任何性能和/或可扩展性问题可能引发的额外硬件更昂贵。
但是,如果您仍然想节省中间件处理,我有一个替代想法:Django 管理员提供的便利功能(即 CRUD 操作)可以通过 DRF 视图集快速复制。也许您可以为您的用户使用一些快速开发的前端框架构建相应的 API 客户端。(我想说,只使用 DRF 可浏览 API,但我记得它也依赖于与 Django 管理员几乎相同的基本中间件。)
推荐阅读
- java - 如何为多个 url 设置 Cache-Contro
- android - Xamarin.forms - Xam.Plugin.Media 抛出错误 此功能未在此程序集的可移植版本中实现
- prolog - 删除一封信
- c# - System.SpanExtensions 在哪里?
- powershell - Set-Content 将创建新文件但不会替换旧文件
- javascript - jQuery - 验证
- python - 使用 BeautifulSoup 将所有 href 刮到列表中
- css - 宝贝步骤将scss编译为css
- bash - Bash 脚本检查是否成功 curl
- javascript - 找到一个字符的出现