在 Django REST Framework 中使用路由器时,如何让 APIViews 和 ViewSets 显示在 API Root 上?

Kre*_*hek 6 python django django-rest-framework

我最近开始使用 DRF 并且想知道如何获取由路由器提供的自动生成的 API Root 来显示不是来自基于 ViewSet 的视图的端点路由。

就我而言,我的 views.py 中有一些非 ViewSet(通用)基于类的视图(ListAPIView 和 RetrieveAPIView),我希望它们出现在我的 API Root 中。

我对此问题的替代解决方案持开放态度,例如我是否应该放弃 ViewSets 并以不同的方式实现这些端点等。

Den*_*ehl 3

我认为最好的方法是:

  • 继续使用所有您喜欢的 ViewSets / Generic* / Mixins / 裸视图。这才是真正的工作发生的地方。
  • 重写APIRoot-View(它并不复杂,请参阅源代码)。
  • 使用 urlconfig 或扩展DefaultRouter以使 DRF 使用您的 APIRoot-View。