簡體   English   中英

Django S3BotoStorage __init__覆蓋錯誤,“沒有屬性'rsplit'”

[英]Django S3BotoStorage __init__ override error , “has no attribute 'rsplit'”

跟蹤的最后幾行:

  File "/usr/local/lib64/python3.4/site-packages/django/core/files/storage.py", line 328, in get_storage_class
    return import_string(import_path or settings.DEFAULT_FILE_STORAGE)
  File "/usr/local/lib64/python3.4/site-packages/django/utils/module_loading.py", line 15, in import_string
    module_path, class_name = dotted_path.rsplit('.', 1)
AttributeError: type object 'S3StaticStorage' has no attribute 'rsplit'

S3StaticStorage

class S3StaticStorage(S3BotoStorage):
    def __init__(self, *args, **kwargs):
        kwargs['bucket'] = getattr(settings, 'AWS_BUCKET_STATIC')
        super(S3StaticStorage, self).__init__(*args, **kwargs)

我有一個名為prod.py的文件,該文件導入common.py ,並且將其相應地配置為wsgi.pymanage.py的設置源。 prod.py中的prod.py設置存儲桶名稱:

AWS_BUCKET_STATIC = 'myproject-static'

沒有覆蓋,這不是問題,當我將所有內容都放在一個存儲桶中時。 使用此類或其他rsplit時,是否需要導入rsplit 看起來它應該是Python內置的,因此不需要導入。 如果我正確理解, getattr(settings, 'AWS_BUCKET_STATIC')會從Django找到的任何設置文件中獲取變量,因此也不是問題。


完整跟蹤:

  File "manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "/usr/local/lib64/python3.4/site-packages/django/core/management/__init__.py", line 350, in execute_from_command_line
    utility.execute()
  File "/usr/local/lib64/python3.4/site-packages/django/core/management/__init__.py", line 342, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/usr/local/lib64/python3.4/site-packages/django/core/management/__init__.py", line 195, in fetch_command
    klass = load_command_class(app_name, subcommand)
  File "/usr/local/lib64/python3.4/site-packages/django/core/management/__init__.py", line 40, in load_command_class
    return module.Command()
  File "/usr/local/lib64/python3.4/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 32, in __init__
    self.storage.path('')
  File "/usr/local/lib64/python3.4/site-packages/django/utils/functional.py", line 204, in inner
    self._setup()
  File "/usr/local/lib64/python3.4/site-packages/django/contrib/staticfiles/storage.py", line 394, in _setup
    self._wrapped = get_storage_class(settings.STATICFILES_STORAGE)()
  File "/usr/local/lib64/python3.4/site-packages/django/core/files/storage.py", line 328, in get_storage_class
    return import_string(import_path or settings.DEFAULT_FILE_STORAGE)
  File "/usr/local/lib64/python3.4/site-packages/django/utils/module_loading.py", line 15, in import_string
    module_path, class_name = dotted_path.rsplit('.', 1)
AttributeError: type object 'S3StaticStorage' has no attribute 'rsplit'

看起來 STATICFILES_STORAGE期望一個表示模塊路徑的字符串:

STATICFILES_STORAGE='path.to.your.S3StaticStorage'

暫無
暫無

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

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