gpt4 book ai didi

django-rest-framework - Django rest swagger 文档将选择文件显示为字符串

转载 作者:行者123 更新时间:2023-12-04 11:41:01 27 4
gpt4 key购买 nike

我正在使用 django rest 框架 django rest swagger 创建简单的 swagger 文档。

Python: 3.6
Django: 3.0.3
django-rest-swagger: 2.2.0
djangorestframework: 3.11.0

这是 模型.py
class Image(models.Model):
file = models.ImageField(upload_to='photos', null=True, blank=True)
is_active = models.BooleanField(default=False, null=True, blank=True)
created_at = models.DateTimeField(default=timezone.now)

class Meta:
db_table = 'image'

def __str__(self):
return self.file.name

我创建了 serializers.py
class ImageSerializer(serializers.ModelSerializer):

class Meta:
model = Image
fields = ('id', 'file', 'created_at')

这里还有 image_view.py
from rest_framework import generics
from rest_framework.parsers import FormParser, MultiPartParser, FileUploadParser

from api.serializers import ImageSerializer
from api.models import Image


class ImageView(generics.CreateAPIView):
serializer_class = ImageSerializer
parser_classes = (FileUploadParser, )

def post(self, request, *args, **kwargs):
"""
Image Moodel
---
parameters:
- name: file
type: file
responseMessages:
- code: 201
message: Created
"""
file = request.data.get('file')
image = Image(file=file, name=file.name)
return self.create(request, *args, **kwargs)

图片上传显示为字符串。

enter image description here

如何解决这个问题?

最佳答案

快速查阅 Swagger 文档,这似乎取决于您所针对的 OpenAPI 版本,这是正确的行为。 OpenAPI 规范的第 3 版不支持文件类型的概念,而 v2 确实有文件格式的概念。考虑到定义 JSON 的 RFC,这是有道理的,RFC7159 , 具有被视为有效 JSON 一部分的有限值类型列表。

更多信息可咨询here

附录:我不能直接谈论您用来生成文档的框架,但对于图像/文件上传,format属性可用于指定文件的上传方式,即二进制、base64 编码。您可以找到更多信息 here关于文件上传和 OpenAPI 规范

查看您的框架文档,它似乎还针对较旧的 Swagger 1.2/OpenAPI v2 规范,在这种情况下,这仍然是正确的行为,如 data types 上的 OpenAPI v2 中所述。

关于django-rest-framework - Django rest swagger 文档将选择文件显示为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60064105/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com