我正在尝试实现一个新的Storage类,它从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(名称,内容)并将所有内容上传到S3)。但是,如果我有这个新的CustomStorage.save方法,我会收到500错误。 (虽然我的错误消息出现在终端中,但它确实被调用了)。我看不到任何调用堆栈或任何东西。
我试过了:
def save(self,*args, **kwargs):
def save(self,name, content):
这些都没有奏效。
有什么想法吗?!
谢谢!
答案 0 :(得分:0)
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)