【问题标题】:Django-tastypie: Any example on file upload in POST?Django-tastypie:在 POST 中上传文件的任何示例?
【发布时间】:2012-09-05 01:13:09
【问题描述】:

谁能给出一个完整的例子来说明如何使用tastepie FileField,包括服务器端和客户端?

这是我尝试过的:

#models.py
class Foo(models.Model):
    img = models.ImageField(upload_to="images", null=True, blank=True)
    body = models.CharField()

#api.py
class FooResource(ModelResource):
    img = fields.FileField(attribute="image", null=True, blank=True)
    class Meta:
        queryset = Foo.objects.all()

如果我尝试使用 curl 创建一个 foo 对象,例如,

>>> curl -F "body=test" -F "img=@local_img.png" http://localhost:8000/api/0.1/foo/

成功创建了一个 foo 对象,但 img 字段为空。我可以在调试器中看到,当保存 bundle 对象时确实有一个包含 InMemoryUploadedFile 对象的 img 字段,所以请求可能没问题。 我在哪里做错了?欢迎使用代码 sn-ps,谢谢!

【问题讨论】:

    标签: python django tastypie


    【解决方案1】:

    您的资源应如下所示:

    class FooResource(ModelResource):
        img = fields.FileField(attribute="img", null=True, blank=True)
        class Meta:
            queryset = Foo.objects.all()
    

    attribute 应该对应于模型中的字段。 如文档中所述:

    ApiField.属性

    一个字符串,命名资源包装的对象的实例属性。

    【讨论】:

    • 当我这样做时,我得到错误:The format indicated 'multipart/form-data' had no available deserialization method. 我错过了一些简单的东西吗?
    • 我在this github post的基础上找到了解决缺失反序列化错误here的方法。
    猜你喜欢
    • 2012-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-22
    • 2011-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多