Collectstatic бросает AttributeError: объект 'NoneType' не имеет атрибута 'startswith
Я следую этому руководству для обслуживания статических файлов для моего сайта с помощью пространства Digital Ocean.
Вот мои настройки:
...
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media/')
AWS_ACCESS_KEY_ID = os.environ.get("DIGITALOCEAN_STATIC_ACCESS_KEY")
AWS_SECRET_ACCESS_KEY = os.environ.get("DIGITALOCEAN_STATIC_SECRET_KEY")
AWS_STORAGE_BUCKET_NAME = os.environ.get("AWS_STORAGE_BUCKET_NAME")
AWS_LOCATION = os.environ.get("AWS_LOCATION")
AWS_S3_ENDPOINT_URL = 'https://nyc3.digitaloceanspaces.com'
AWS_S3_OBJECT_PARAMETERS = {
'CacheControl': 'max-age=86400',
}
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static'),
]
STATIC_URL = 'https://%s/%s/' % (AWS_S3_ENDPOINT_URL, AWS_LOCATION)
STATICFILES_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
STATIC_ROOT ='/home/myname/example/assets'
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
Когда я бегу
python manage.py collectstatic
Я получаю следующее:
location as specified in your settings.
This will overwrite existing files!
Are you sure you want to do this?
Type 'yes' to continue, or 'no' to cancel: yes
Traceback (most recent call last):
File "manage.py", line 22, in <module>
main()
File "manage.py", line 18, in main
execute_from_command_line(sys.argv)
File "/home/user/example/env/lib/python3.8/site-packages/django/core/management/__init__.py", line 419, in execute_from_command_line
utility.execute()
File "/home/user/example/env/lib/python3.8/site-packages/django/core/management/__init__.py", line 413, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/home/user/example/env/lib/python3.8/site-packages/django/core/management/base.py", line 354, in run_from_argv
self.execute(*args, **cmd_options)
File "/home/user/example/env/lib/python3.8/site-packages/django/core/management/base.py", line 398, in execute
output = self.handle(*args, **options)
File "/home/user/example/env/lib/python3.8/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 187, in handle
collected = self.collect()
File "/home/user/example/env/lib/python3.8/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 114, in collect
handler(path, prefixed_path, storage)
File "/home/user/example/env/lib/python3.8/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 338, in copy_file
if not self.delete_file(path, prefixed_path, source_storage):
File "/home/user/example/env/lib/python3.8/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 248, in delete_file
if self.storage.exists(prefixed_path):
File "/home/user/example/env/lib/python3.8/site-packages/django/utils/functional.py", line 246, in inner self._setup()
File "/home/user/example/env/lib/python3.8/site-packages/django/contrib/staticfiles/storage.py", line 438, in _setup
self._wrapped = get_storage_class(settings.STATICFILES_STORAGE)()
File "/home/user/example/env/lib/python3.8/site-packages/storages/backends/s3boto3.py", line 254, in __init__
check_location(self)
File "/home/user/example/env/lib/python3.8/site-packages/storages/utils.py", line 90, in check_location
if storage.location.startswith('/'):
AttributeError: 'NoneType' object has no attribute 'startswith'
Вы видите, в чем проблема?