我正在尝试创建一个端点,以使用 django 休息框架将图像(使用邮递员)上传到特定文件夹。这是我对文件夹的设置,
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
这是我的模型,
class UserMedia(models.Model):
user = models.OneToOneField(User, related_name='medias', on_delete=models.CASCADE, )
profile_image_web = models.FileField(null=True)
profile_image_android = models.FileField(null=True)
profile_image_ios = models.FileField(null=True)
thumbnail = models.FileField(null=True)
这是序列化器,
class UserMediaSerializer(serializers.ModelSerializer):
class Meta:
model = models.UserMedia
fields = (
'profile_image_web', 'profile_image_ios', 'profile_image_android', 'thumbnail',
)
这是API,
class CreateUpdateUserMedia(views.APIView):
parser_classes = (MultiPartParser, FormParser)
def post(self, request, **kwargs):
serializer = UserMediaSerializer(request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
else:
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
现在,当我尝试使用 POSTMAN 上传与其中一个字段对应的一张图像时,这是我收到的错误。
'Cannot call `.is_valid()` as no `data=` keyword argument was '
AssertionError: Cannot call `.is_valid()` as no `data=` keyword argument was passed when instantiating the serializer instance.
这是完全可以理解的,但我不知道如何解决它。
这是我的问题,
如何使用 django Rest 框架正确上传图像。
我不希望这个 api 被 4 个图像一起调用,而是一次使用一张图像 4 次,我如何传递相关名称和
相应地修改序列化器。
如何提供根媒体目录的子路径。
最后我希望序列化程序显示完整的图像网址,我该怎么做?