0

我正在尝试实现一个新的存储类,该类从 Django-Storages 中继承 S3BotoStorage。(http://code.larlet.fr/django-storages/src/83fa2f0ba20c/storages/backends/s3boto.py)

每当调用我的新类的 save 方法时,我想做一些其他的事情,然后调用 S3BotoStorage._save() 方法。像这样:

class CustomStorage(S3BotoStorage):
    def __init__(self, *args, **kwargs):
        super(CustomStorage, self).__init__(*args, **kwargs)

    def _save(self,*args, **kwargs):
        #Will do stuff there
        print >> sys.stderr, "%s" % (self.bucket)
        super(CustomStorage, self)._save(*args, **kwargs)

如果我没有此 CustomStorage._save() 方法,则一切正常(即调用 S3BotoStorage._save(name,content) 并将所有内容上传到 S3)。但是,如果我有这个新的 CustomStorage.save 方法,我会收到 500 错误。(它确实被调用了,因为我的错误消息出现在终端中)。我看不到任何调用堆栈或任何东西。

我试过了:

def save(self,*args, **kwargs):
def save(self,name, content):

这些都不起作用。

有任何想法吗?!

谢谢!

4

1 回答 1

1

Storage._save应该返回正在保存的文件的名称。你_save没有。您应该从super调用中返回值。

class CustomStorage(S3BotoStorage):
    def __init__(self, *args, **kwargs):
        super(CustomStorage, self).__init__(*args, **kwargs)

    def _save(self,*args, **kwargs):
        #Will do stuff there
        print >> sys.stderr, "%s" % (self.bucket)
        return super(CustomStorage, self)._save(*args, **kwargs)
于 2012-05-15T14:47:36.993 回答