使用django-restless发布图像

时间:2015-05-05 19:57:27

标签: django rest

我正在使用django-restless,我想在POST请求中传递图像。

我在文档中搜索了一些与请求中传递文件/图像相关的内容,但我无法找到。

有人可以帮助我如何使用django-restless with images?

仅供参考,我的模特:

class MyModel(models.Model):
    prefix = models.CharField('prefix', max_length=10, unique=True, editable=False, null=True)
    input_image = models.ImageField('Input image')

我的资源:

class MyModelResource(DjangoResource):
    preparer = FieldsPreparer(fields={
        'input_image': 'input_image_url',
        'id': 'id',
    })

    def is_authenticated(self):
        return True

    @skip_prepare
    def list(self):
        return list(MyModel.objects.all().values('id'))

    def update(self):
        raise MethodNotAllowed()

    def delete(self):
        raise MethodNotAllowed()

    def detail(self, pk):
        return MyModel.objects.get(id=pk)

    def create(self):
        input_image = SimpleUploadedFile('', base64.b64decode(self.data['input_image']), "application/octet-stream")

        return CountProcess.objects.create(input_image=input_image)

它现在不能正常工作......

1 个答案:

答案 0 :(得分:0)

我意识到django-restless支持多部分表单数据。我解决了创建常规ModelForm并将其添加到Resource的问题:

class MyModelResource(DjangoResource):
    preparer = FieldsPreparer(fields={
        'input_image': 'input_image_url',
        'id': 'id',
    })

    def is_authenticated(self):
        return True

    @skip_prepare
    def list(self):
        return list(MyModel.objects.all().values('id'))

    def update(self):
        raise MethodNotAllowed()

    def delete(self):
        raise MethodNotAllowed()

    def detail(self, pk):
        return MyModel.objects.get(id=pk)

    def create(self):
        form = MyModelForm(self.request, self.data, self.request.FILES)
        obj = None

        if form.is_valid():
            obj = form.save()

        return obj