簡體   English   中英

從子類調用S3BotoStorage Save()方法

[英]Calling the S3BotoStorage Save() method from a subclass

我正在嘗試實現一個新的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(name,content),並將所有內容上傳到S3)。 但是,如果我有這個新的CustomStorage.save方法,則會收到500錯誤。 (盡管它確實被調用,因為我的錯誤消息出現在終端中)。 我看不到任何調用堆棧或任何內容。

我試過了:

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

這些都不起作用。

有任何想法嗎?!

謝謝!

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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM