使用drf-yasg时,如何自定义DRF API端点名称?
自定义drf-yasg中POST端点的显示名称
drf-yasg默认会根据视图方法(比如create)生成后缀为create的端点名称,你可以通过以下几种方式自定义:
1. 使用@swagger_auto_schema装饰器精准设置
这是最直接的方式,针对单个POST方法自定义显示名称和标识:
from drf_yasg.utils import swagger_auto_schema from rest_framework.views import APIView from rest_framework.response import Response class CustomResourceView(APIView): @swagger_auto_schema( operation_summary="创建专属资源", # 文档中显示的端点名称 operation_id="custom_resource_create" # 内部标识,可自定义 ) def post(self, request): # 你的业务逻辑 return Response({"status": "success"})
如果是使用ModelViewSet,可以直接重写create方法并添加装饰器:
from drf_yasg.utils import swagger_auto_schema from rest_framework.viewsets import ModelViewSet from .models import Resource from .serializers import ResourceSerializer class ResourceViewSet(ModelViewSet): queryset = Resource.objects.all() serializer_class = ResourceSerializer @swagger_auto_schema(operation_summary="创建新资源实例") def create(self, request, *args, **kwargs): return super().create(request, *args, **kwargs)
2. 重写视图类的get_view_name方法(针对类视图)
如果希望统一修改视图的名称前缀,可以重写这个方法,drf-yasg会读取该值来生成相关文档标题:
from rest_framework.viewsets import ModelViewSet from .models import Resource from .serializers import ResourceSerializer class ResourceViewSet(ModelViewSet): queryset = Resource.objects.all() serializer_class = ResourceSerializer def get_view_name(self): return "资源管理"
结合装饰器使用可以获得更精准的控制,避免所有方法共享同一个名称前缀。
3. 调整URL配置的name参数(辅助优化)
在URL配置中为视图指定自定义name,也会对drf-yasg的文档生成产生影响:
from django.urls import path from .views import CustomResourceView urlpatterns = [ path("resources/", CustomResourceView.as_view(), name="custom_resource_create"), ]
不过这种方式的优先级低于@swagger_auto_schema的设置,建议和装饰器配合使用。
内容的提问来源于stack exchange,提问作者paul maiyani serian
相关产品推荐
相关产品推荐

