django - Django - 将带有图像的 JSON 发送到服务器
问题描述
我有一个模型-
class Store(models.Model):
store_id = models.AutoField(primary_key=True)
owner = models.ForeignKey(CustomUser, on_delete = models.CASCADE)
name = models.CharField(max_length=75)
description = models.TextField(blank=True)
logo = models.ImageField(upload_to='store/')
contactNumber = PhoneNumberField(blank=True, help_text='Contact number')
start = models.TimeField(auto_now=False, auto_now_add=False)
end = models.TimeField(auto_now=False, auto_now_add=False)
sundayOpen = models.BooleanField(default=False)
mondayOpen = models.BooleanField(default=False)
tuesdayOpen = models.BooleanField(default=False)
wednesdayOpen = models.BooleanField(default=False)
thursdayOpen = models.BooleanField(default=False)
fridayOpen = models.BooleanField(default=False)
saturdayOpen = models.BooleanField(default=False)
我有一个序列化程序,可以在没有几个字段的情况下获取图像字段(我自己设置 - 商店 ID 和所有者)
class CreateStoreSerializer(serializers.ModelSerializer):
class Meta:
model = Store
fields = ('name','description','logo','contactNumber',
'start','end','sundayOpen','mondayOpen','tuesdayOpen','wednesdayOpen',
'thursdayOpen','fridayOpen','saturdayOpen')
我有一个应该处理请求的视图 - Image + JSON
class StoreDetailView(APIView):
parser_classes = (MultiPartParser,FormParser, JSONParser)
permission_classes = (IsAuthenticated,)
def post(self, request,store_id=None):
objj = CreateStoreSerializer(data=request.data)
print(objj.is_valid())
return Response(status=status.HTTP_200_OK)
objj.errors
给了这个信息 -
{
"name": [ErrorDetail(string="This field is required.", code="required")],
"logo": [ErrorDetail(string="No file was submitted.", code="required")],
"start": [ErrorDetail(string="This field is required.", code="required")],
"end": [ErrorDetail(string="This field is required.", code="required")],
}
序列化程序验证说它无效。我尝试使用 JSON 数据从 Postman 发送请求,但其中的图像字段除外。logo
图像字段是使用与我放置 as 的 imageField ( )Content-Type
同名的表单数据选择的application/json
。
但是,序列化程序验证说的是假的。我该如何解决?
解决方案
看来您正在发送
Content-Type
asapplication/json
。您应该将内容类型发送为
multipart/form-data
.当您发送内容类型时,
application/json
它不会发送文件。在邮递员中,您可以像下面那样发送数据
multipart/form-data
推荐阅读
- wordpress - 将一个页面嵌入另一个页面
- javascript - 什么是 React 上下文函数的正确类型声明以避免 linting 问题?
- blockchain - 如何使用前端部署智能合约。就像 REMIX IDE 正在做的那样
- stanford-nlp - 我是否需要为抽象摘要模型的源词汇和目标词汇创建单独的嵌入矩阵?
- regex - 如何将列表中的最后一个逗号和空格与正则表达式匹配?
- php - 如何从 PHP 脚本中同步生成另一个 PHP 脚本?
- java - 我想在数组中添加更多单词并在每次成功猜测后增加分数。怎么做?
- django - 重定向到外部网站时,url 被附加到请求的 url 的末尾
- c++ - 想在将数据添加到 kinesis data str 后打印 shardID 和序列号
- c++ - 是否可以将此递归更改为没有堆栈的迭代?