drf-yasg:图像字段未在 swagger ui 中显示

Posted

技术标签:

【中文标题】drf-yasg:图像字段未在 swagger ui 中显示【英文标题】:drf-yasg: Image field not displaying in swagger ui 【发布时间】:2021-07-27 00:27:21 【问题描述】:

我是 django-rest-framework 的新手。我正在使用 DRF 和 drf-yasg Swagger。任何机构都可以帮助从请求主体上传图片吗?我无法从请求正文上传图片。我当前的view.py:

@swagger_auto_schema(method='post', request_body=MySerializer)
@api_view(['POST'])
def image(request):
    profile_img = request.FILES.get('profile_img', '')
    cover_img = request.FILES.get('cover_img', '')
    ...
    pass

my_serializer.py:

class MySerializer(serializers.Serializer):
    profile_img = serializers.ImageField()
    profile_img = serializers.ImageField()

谁能解释一下这个问题?

【问题讨论】:

【参考方案1】:

在您的视图函数中将FormParser 类设置为,

from rest_framework.parsers import FormParser
from rest_framework.decorators import parser_classes


@swagger_auto_schema(method='post', request_body=MySerializer)
@api_view(['POST'])
@parser_classes((FormParser,))
def image(request):
    profile_img = request.FILES.get('profile_img', '')
    cover_img = request.FILES.get('cover_img', '')

【讨论】:

【参考方案2】:

在使用图像时使用MultiPartParse

from rest_framework.parsers import MultiPartParser
from rest_framework.decorators import parser_classes

@parser_classes((MultiPartParser,))
def image(request):
    profile_img = request.FILES.get('profile_img', '')
    cover_img = request.FILES.get('cover_img', '')

【讨论】:

以上是关于drf-yasg:图像字段未在 swagger ui 中显示的主要内容,如果未能解决你的问题,请参考以下文章

自定义路径参数解析drf-yasg和Django。

Django rest framework + drf-yasg 关于 api 文档 web 页面数据修改方法

Swagger UI 未在 azure .net 核心中生成,但在本地工作

Swagger UI 未在 index.html 页面上显示任何内容

Rack-cors 未在 swagger-ui_rails 的生产环境中显示标题

Web Service和REST(下)