Django-storages[google] - Ошибка атрибута ключа хранилища Staticfiles
Я пытаюсь настроить Django (5.0.4) на использование Google Cloud S3 в качестве файлового хранилища с помощью django-stores.
Вот как выглядит моя конфигурация settings.py для хранения объектов:
from google.oauth2.service_account import Credentials
STORAGES = {
"default": {
"BACKEND": "storages.backends.gcloud.GoogleCloudStorage",
"OPTIONS": {
"GS_BUCKET_NAME": "BUCKET",
"GS_PROJECT_ID": "PROJECT",
"GS_CREDENTIALS": Credentials.from_service_account_file("service-account.json"),
},
},
"staticfiles": "storages.backends.gcloud.GoogleCloudStorage"
}
После выполнения python manage.py collectstatic
я получаю следующую ошибку AttributeError
Traceback (most recent call last):
File "/home/victor/BmLabs/site/manage.py", line 22, in <module>
main()
File "/home/victor/BmLabs/site/manage.py", line 18, in main
execute_from_command_line(sys.argv)
File "/home/victor/.pyenv/versions/bmlabs/lib/python3.12/site-packages/django/core/management/__init__.py", line 442, in execute_from_command_line
utility.execute()
File "/home/victor/.pyenv/versions/bmlabs/lib/python3.12/site-packages/django/core/management/__init__.py", line 382, in execute
settings.INSTALLED_APPS
File "/home/victor/.pyenv/versions/bmlabs/lib/python3.12/site-packages/django/conf/__init__.py", line 89, in __getattr__
self._setup(name)
File "/home/victor/.pyenv/versions/bmlabs/lib/python3.12/site-packages/django/conf/__init__.py", line 76, in _setup
self._wrapped = Settings(settings_module)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/victor/.pyenv/versions/bmlabs/lib/python3.12/site-packages/django/conf/__init__.py", line 262, in __init__
self.STORAGES.get(STATICFILES_STORAGE_ALIAS, {}).get("BACKEND"),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'str' object has no attribute 'get'
В соответствии с руководством <2>> я установил клавишу staticfiles
на storages.backends.gcloud.GoogleCloudStorage
.
В старых версиях Django существуют независимые переменные верхнего уровня DEFAULT_FILE_STORAGE
и/или STATICFILES_STORAGE
, которые принимают одну строку.
В современных версиях Django есть STORAGES
, который требует диктант диктов с ключом BACKEND
. Пусть конфигурация хранилища staticfiles
выглядит так же, как и конфигурация default
, а не просто как одна строка.