gpt4 book ai didi

python - Django Rest Framework 无法解析多部分/表单数据

转载 作者:行者123 更新时间:2023-12-05 00:47:48 27 4
gpt4 key购买 nike

如 DRF 文档 http://www.django-rest-framework.org/api-guide/parsers/#multipartparser 中所述, 为了解析 multipart/form-data,必须使用 MultiPart 和表单解析器。我怀疑这是 Django Rest Framework 中的一个问题,因为我在他们的 github 问题上看到了一个解决方案,说它可以使用 APIView 工作。

from django.contrib.auth.models import User
from rest_framework import viewsets
from api.serializers import UserSerializer,

from rest_framework.parsers import MultiPartParser, FormParser
from rest_framework.response import Response
from rest_framework import status

class UserViewSet(viewsets.ModelViewSet):
"""
API endpoint that allows users to be viewed or edited.
"""
queryset = User.objects.all()
parser_classes = (MultiPartParser, FormParser)
serializer_class = UserSerializer

我向 postman 发送请求并显示结果的图片:
Picture of me sending request to Postman with result

编辑:添加 UserSerializer 类
class UserSerializer(serializers.HyperlinkedModelSerializer):
snapcapsules = SnapCapsuleSerializer(
many=True,
read_only=True,
allow_null=True,
)

class Meta:
model = User
fields = ('snapcapsules', 'url', 'username', 'email', 'password', )
write_only_fields = ('password',)

def create(self, validated_data):
user = User.objects.create(
username=validated_data['username'],
email=validated_data['email'],
)

user.set_password(validated_data['password'])
user.save()

return user

def update(self, instance, validated_data):
capsules_data = validated_data.pop('snapcapsules')

for capsule in capsules_data:
SnapCapsule.objects.create(user=instance, **capsule)

return instance

Picture of what I of what I requested

最佳答案

这可能不是 ContentType 的问题。 .错误响应说,UserSerializer除了 payloaddata其中包括 usernamepassword field
因此,请尝试将这些字段添加到请求正文中,然后重试
POstman ScreenShot
更新
Orginal Post 的问题是,他在 POSTMAN 中添加了额外的标题(见下图)enter image description here .
postman 会为您添加适当的标题。因此,您不必明确提及它

关于python - Django Rest Framework 无法解析多部分/表单数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50959137/

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