DRF API接口页面未展示已配置路由URL的问题咨询
核心原因
你手动在urlpatterns中定义的路由没有被DRF的路由器管理,所以不会出现在DRF可浏览API的首页列表中。
DRF API接口页面会展示的URL
- 所有通过
DefaultRouter/SimpleRouter的register()方法注册的视图集(ViewSet)对应的路由,包括自动生成的增删改查等标准操作路由 - 视图集中用
@action装饰器声明的自定义接口路由,会自动被路由器收录后展示 - 权限校验通过的路由:当前登录用户拥有访问权限的路由才会被展示
DRF API接口页面不会展示的URL
- 直接写在Django原生
urlpatterns中、未被DRF路由器管理的普通路由,包括你当前写的@api_view装饰的函数视图路由、普通类视图路由 - Django原生自带的路由,比如admin后台路由、静态资源路由
- 当前登录用户无访问权限的路由
- 配置了隐藏属性的自定义路由
你当前场景的修复方案
如果不想调整现有视图结构,可将函数视图改为视图集并通过路由器注册即可在首页展示,示例代码如下:
# 视图代码 from rest_framework import viewsets from rest_framework.response import Response class HelloWorldViewSet(viewsets.ViewSet): # 对应GET请求 def list(self, request): return Response({"message": "Hello, world!"}) # 对应POST请求 def create(self, request): return Response({"message": "Got some data!", "data": request.data})
# 路由代码 from rest_framework.routers import DefaultRouter from .views import HelloWorldViewSet router = DefaultRouter() router.register(r'hello_world', HelloWorldViewSet, basename='hello_world') urlpatterns = [ # 你的其他原有路由 path('', include(router.urls)), ]
内容的提问来源于stack exchange,提问作者Santhosh
相关产品推荐
相关产品推荐

