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

使用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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 15:00:58