drf-yasg 如何隐藏每个字段对应的'title'属性
drf-yasg隐藏字段title属性解决方案

你在drf-yasg接口文档中看到的每个字段对应的title属性,可通过以下两种方式隐藏:
方法1:全局隐藏所有字段的title属性
- 自定义FieldInspector类,递归移除生成的schema中的title字段,代码如下:
from drf_yasg.inspectors import FieldInspector class RemoveTitleFieldInspector(FieldInspector): def process_result(self, result, method_name, obj, **kwargs): # 移除当前层级的title属性 result.pop('title', None) # 处理嵌套属性的title if 'properties' in result: for prop in result['properties'].values(): prop.pop('title', None) return result
- 在Django项目的settings.py中修改
SWAGGER_SETTINGS配置,将自定义的Inspector放在默认检查器列表的最前面:
SWAGGER_SETTINGS = { # 你的其他原有配置保持不变 'DEFAULT_FIELD_INSPECTORS': [ '你存放类的模块路径.RemoveTitleFieldInspector', # 替换为实际的文件路径 'drf_yasg.inspectors.CamelCaseJSONFilter', 'drf_yasg.inspectors.ReferencingSerializerInspector', # 剩余默认的FieldInspector保持原有顺序即可 ] }
配置完成后重启服务,所有字段的title属性就会被自动移除。
方法2:仅隐藏指定字段的title属性
如果不需要全局生效,可直接在Serializer字段中手动设置title=None:
from rest_framework import serializers class DemoSerializer(serializers.Serializer): # 单个字段关闭title属性 username = serializers.CharField(max_length=32, title=None) phone = serializers.CharField(max_length=11, title=None)
补充说明:drf-yasg默认会从字段的verbose_name、help_text或者字段名自动生成title属性,属于OpenAPI规范的可选字段,移除后不会影响接口调用和文档其他功能的正常使用。
内容的提问来源于stack exchange,提问作者goldenotaste
相关产品推荐
相关产品推荐

