我正在尝试使用Django rest Framework上的createAPIView创建一个注册api。每次我在Postman上发布数据时,尽管我在浏览器中运行它时都会得到响应,但它会返回上述错误。同样,图像字段也导致邮递员的原始数据出现问题。我已经尝试了很多东西,但是似乎没有什么用。我该怎么办?
序列化器
class UserSerializer(serializers.ModelSerializer):
email = serializers.EmailField(
required=True,
validators=[UniqueValidator(queryset=User.objects.all())]
)
password = serializers.CharField(min_length=8)
class Meta:
model = User
fields = ('id', 'first_name','last_name', 'email', 'username','password')
extra_kwargs = {'user': {'required': False}}
class UserProfileSerializer(serializers.ModelSerializer):
user = UserSerializer()
code = serializers.CharField(read_only=True)
avatar = serializers.FileField(use_url=False)
class Meta:
model = UserProfile
fields = '__all__'
extra_kwargs = {'user': {'required': False}}
def create(self, validated_data):
user_data = validated_data.pop('user',None)
image = validated_data.pop('avatar')
upr=UserProfile.objects.create(user=user_data, image=image**validated_data)
return upr
观看次数
class UserCreate(generics.ListCreateAPIView):
serializer_class = UserProfileSerializer
user_serializer = UserSerializer
queryset = UserProfile.objects.all()
parser_classes = (FormParser,MultiPartParser,FileUploadParser)
def post(self, request):
serializer = UserProfileSerializer(data=request.data)
print(request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
答案 0 :(得分:0)
您正在尝试不首先创建用户就发送个人资料数据。并且配置文件对象必须应用于已经存在的用户。