【问题标题】:drf-yasg hide title propertydrf-yasg 隐藏标题属性
【发布时间】:2021-12-11 16:54:57
【问题描述】:

所以如图所示,有没有办法隐藏每个项目的“标题”属性?我真的不明白这些标题的目的。

【问题讨论】:

    标签: python django swagger drf-yasg


    【解决方案1】:

    基于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
       ...
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-07-27
      • 2022-12-21
      • 1970-01-01
      • 1970-01-01
      • 2013-03-13
      • 1970-01-01
      • 2020-10-15
      相关资源
      最近更新 更多