You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django REST Framework路由带前缀时如何让根索引页可浏览?

实现根路由展示API列表的可行方案

以下是基于你当前Django REST Framework(DRF)项目的两种常用实现方案:

方案1:根路径展示API版本入口(推荐)

该方案逻辑简单、易维护,符合接口多版本迭代的常规设计:

  1. 先定义根路由的视图函数,返回所有可用的API版本入口
from rest_framework.decorators import api_view
from rest_framework.response import Response

@api_view(['GET'])
def api_root(request, format=None):
    return Response({
        'v1': request.build_absolute_uri('/v1/'),
        # 后续新增v2、v3等版本时直接在此处添加即可
    })
  1. 修改urlpatterns配置,绑定根路径到上述视图
urlpatterns = [
    path('', api_root, name='api-root'),
    path('v1/', include(router.urls))
]

配置完成后访问api.domain.tld/会展示带/v1入口的可浏览API页面,点击/v1入口即可看到你注册的some、foo相关接口列表。

方案2:根路径直接展示所有接口列表

如果不需要多版本分层展示,想在根路径直接返回所有接口地址,可以用reverse自动生成接口链接,避免硬编码:

from rest_framework.decorators import api_view
from rest_framework.response import Response
from rest_framework.reverse import reverse

@api_view(['GET'])
def api_root(request, format=None):
    return Response({
        # 路由name为DRF DefaultRouter自动生成,规则为视图集名小写加-list/-detail,自定义basename的话替换为对应值即可
        'some_thing': reverse('thing-list', request=request, format=format),
        'foo_bar': reverse('bar-list', request=request, format=format),
        # 其他接口按相同规则添加即可
    })

urlpatterns配置和方案1一致即可。

补充说明

  • 两种方案生成的页面都完全兼容DRF原生的可浏览API样式,无需额外开发前端代码
  • 如果仅需要JSON格式的接口列表,请求时携带Accept: application/json头即可自动返回JSON数据

内容的提问来源于stack exchange,提问作者Mr. B.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 07:24:00