Exclude Function-Based API Views from drf_yasg (drf-yasg==1.21.4)
To exclude function-based API views from drf_yasg, you can use the 'exclude' parameter in the 'AutoSchema' class. Here's an example:
from rest_framework.decorators import api_view
from drf_yasg import openapi
from drf_yasg.views import get_schema_view
from drf_yasg.inspectors import SwaggerAutoSchema
# Function-based view
@api_view()
def my_view(request):
'''
My function-based view.
'''
...
# Exclude function-based views from schema
class ExcludeFunctionBasedSchema(SwaggerAutoSchema):
def should_filter(self, path, method, view):
return not hasattr(view, 'get_serializer_class')
schema_view = get_schema_view(
openapi.Info(
title="My API",
default_version="v1",
description="My API description",
terms_of_service="https://example.com/terms/",
contact=openapi.Contact(email="contact@example.com"),
license=openapi.License(name="BSD License"),
),
public=True,
permission_classes=[permissions.AllowAny],
# Use excluded schema
schema_generator_class=ExcludeFunctionBasedSchema,
)
urlpatterns = [
# Your URLs here...
...
]
In this example, we define a function-based view 'my_view' and a custom 'SwaggerAutoSchema' class 'ExcludeFunctionBasedSchema' that excludes function-based views from the schema. We then use the 'schema_generator_class' parameter in the 'get_schema_view' function to use the excluded schema.
Note: This example uses 'hasattr(view, 'get_serializer_class')' as a condition to exclude function-based views. You can modify this condition to suit your needs.
原文地址: https://www.cveoy.top/t/topic/mXDe 著作权归作者所有。请勿转载和采集!