首页 > 解决方案 > 带有 Django 管理员的 REST API

问题描述

我正在使用 Django REST 框架构建一个 API-first 应用程序,因此它根本没有 html 视图,并且只使用基于令牌的身份验证。同时,我想使用 Django 管理界面,这没问题,但我担心性能成本,因为它依赖于很多应用程序(会话、标准身份验证、消息、csrf 等)。 ),在主应用程序中不需要,但会在每个请求上运行。

有没有办法将特定于管理员的中间件设置为仅在管理界面上运行?

我知道我可以对它们进行子类化并在所有请求上引发 MiddlewareNotUsed ,但访问管理站点的请求除外,但也许有一些内置或众所周知的解决方案?

标签: djangodjango-rest-framework

解决方案


要回答您的问题,不,我认为没有内置解决方案可以满足此要求。但这可能是因为您的目的不适合 Django 的设计和理念。

我同意 Sahil 对此的评论。我曾经对性能也很偏执,但我意识到我低估了 Django 的速度(即使有所有这些基本的中间件),如果性能如此关键,我可能一开始就不应该使用 Django。我猜禁用这些中间件最多只会节省应用程序的响应时间,而这只是微不足道的毫秒数;不可避免的网络波动甚至可能更为显着。开发人员的时间比任何性能和/或可扩展性问题可能引发的额外硬件更昂贵。

但是,如果您仍然想节省中间件处理,我有一个替代想法:Django 管理员提供的便利功能(即 CRUD 操作)可以通过 DRF 视图集快速复制。也许您可以为您的用户使用一些快速开发的前端框架构建相应的 API 客户端。(我想说,只使用 DRF 可浏览 API,但我记得它也依赖于与 Django 管理员几乎相同的基本中间件。)


推荐阅读