drf-yasg 隐藏标题 属性
drf-yasg hide title property
所以如图所示,有什么方法可以隐藏每个项目的 'title' 属性 吗?我真的不明白这些标题的目的。
基于drf_yasg
documentation 你应该首先定义一个class来得到一个没有标题的模式 对于每个 API 你可以定义一个 class 如下:
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
现在您应该定义 a class 以使用 drf_yasg
自动删除标题 ,因此您需要定义如下所示的 class:
class NoTitleAutoSchema(SwaggerAutoSchema):
field_inspectors = [NoSchemaTitleInspector] + swagger_settings.DEFAULT_FIELD_INSPECTORS
像下面的代码片段一样,您可以隐藏您的 API 视图集中的所有标题 属性:
class ArticleViewSet(viewsets.ModelViewSet):
swagger_schema = NoTitleAutoSchema
...
所以如图所示,有什么方法可以隐藏每个项目的 'title' 属性 吗?我真的不明白这些标题的目的。
基于drf_yasg
documentation 你应该首先定义一个class来得到一个没有标题的模式 对于每个 API 你可以定义一个 class 如下:
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
现在您应该定义 a class 以使用 drf_yasg
自动删除标题 ,因此您需要定义如下所示的 class:
class NoTitleAutoSchema(SwaggerAutoSchema):
field_inspectors = [NoSchemaTitleInspector] + swagger_settings.DEFAULT_FIELD_INSPECTORS
像下面的代码片段一样,您可以隐藏您的 API 视图集中的所有标题 属性:
class ArticleViewSet(viewsets.ModelViewSet):
swagger_schema = NoTitleAutoSchema
...