【发布时间】:2021-12-11 16:54:57
【问题描述】:
【问题讨论】:
标签: python django swagger drf-yasg
【问题讨论】:
标签: python django swagger drf-yasg
基于drf_yasg documentation 您应该首先定义一个类,以便为每个 API 提供一个没有标题的架构,您可以如下定义一个类: p>
from drf_yasg.inspectors import FieldInspector
class NoSchemaTitleInspector(FieldInspector):
def process_result(self, result, method_name, obj, **kwargs):
# remove the `title` attribute of all Schema objects
if isinstance(result, openapi.Schema.OR_REF):
# traverse any references and alter the Schema object in place
schema = openapi.resolve_ref(result, self.components)
schema.pop('title', None)
# no ``return schema`` here, because it would mean we always generate
# an inline `object` instead of a definition reference
# return back the same object that we got - i.e. a reference if we got a reference
return result
现在你应该定义一个类来使用drf_yasg自动删除标题,因此你需要定义一个如下所示的类:
class NoTitleAutoSchema(SwaggerAutoSchema):
field_inspectors = [NoSchemaTitleInspector] + swagger_settings.DEFAULT_FIELD_INSPECTORS
像下面的 sn-p 一样,您可以在 API 视图集中隐藏所有标题属性:
class ArticleViewSet(viewsets.ModelViewSet):
swagger_schema = NoTitleAutoSchema
...
【讨论】: