python-Django Rest Framework无法解析多部分/表单数据
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python-Django Rest Framework无法解析多部分/表单数据,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1710字,纯文字阅读大概需要3分钟。
内容图文
![python-Django Rest Framework无法解析多部分/表单数据](/upload/InfoBanner/zyjiaocheng/686/7be13ea7a4774a58a52e7f39a335eaff.jpg)
如DRF文档http://www.django-rest-framework.org/api-guide/parsers/#multipartparser中所述,为了解析multipart / form-data,必须使用MultiPart和form解析器.我很怀疑这是Django Rest Framework中的一个问题,因为我在他们的github问题上看到了一个解决方案,说它可以使用API??View运行.
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
我向邮递员发送请求的图片,结果:
编辑:添加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
解决方法:
ContentType可能不是问题.错误响应表明,UserSerializer期望包含用户名和密码字段的有效载荷或数据
因此,请尝试将这些字段添加到请求正文中,然后重试
更新
Orginal Post的问题是,他在POSTMAN中添加了额外的标题(请参见下图).
邮递员会为您芳香地添加适当的标题.因此,您不必明确提及它
内容总结
以上是互联网集市为您收集整理的python-Django Rest Framework无法解析多部分/表单数据全部内容,希望文章能够帮你解决python-Django Rest Framework无法解析多部分/表单数据所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。