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 中显示的主要内容,如果未能解决你的问题,请参考以下文章
Django rest framework + drf-yasg 关于 api 文档 web 页面数据修改方法
Swagger UI 未在 azure .net 核心中生成,但在本地工作
Swagger UI 未在 index.html 页面上显示任何内容