【问题标题】:REST API with Django Admin带有 Django 管理员的 REST API
【发布时间】:2021-05-29 21:04:33
【问题描述】:

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

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

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

【问题讨论】:

  • 你无缘无故地偏执。您已经在构建一个 API 优先应用程序,而您在 Django Admin 上要做的最多的事情可能是调试或只是检查您的数据库。不用担心性能。不要想太多。
  • @Sahil 这正是问题所在。无论我如何使用管理员,它所依赖的所有应用程序都会在每个请求上运行,包括来自 api 用户的请求

标签: django django-rest-framework


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2020-05-02
    • 1970-01-01
    • 1970-01-01
    • 2019-08-06
    • 2011-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-12
    相关资源
    最近更新 更多