Когда я хочу собрать статику на S3, он выдает TypeError
мои настройки.py
import os
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
SECRET_KEY = 'something'
#DEBUG = False
DEBUG = True
PER_PAGE = 12
TEMPLATE_DEBUG = True
ALLOWED_HOSTS = ['xyz.com']
# Application definition
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
.....,
.......,
)
if DEBUG:
INSTALLED_APPS = INSTALLED_APPS + ('storages',)
MIDDLEWARE_CLASSES = (
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
)
TEMPLATE_CONTEXT_PROCESSORS = (
"django.contrib.auth.context_processors.auth",
"django.core.context_processors.debug",
"django.core.context_processors.i18n",
"django.core.context_processors.media",
"django.core.context_processors.static",
"django.core.context_processors.tz",
"django.contrib.messages.context_processors.messages",
)
ROOT_URLCONF = 'myproject.urls'
if DEBUG:
WSGI_APPLICATION = 'myproject.wsgi_production.application'
else:
WSGI_APPLICATION = 'myproject.wsgi.application'
from . import s3_custom
# Internationalization
# https://docs.djangoproject.com/en/1.7/topics/i18n/
LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'UTC'
USE_I18N = True
USE_L10N = True
USE_TZ = True
AWS_STORAGE_BUCKET_NAME = 'bucket name'
AWS_ACCESS_KEY_ID = 'key'
AWS_SECRET_ACCESS_KEY = 'access key'
AWS_S3_CUSTOM_DOMAIN ='https://bucketname.s3.amazonaws.com'
if DEBUG:
STATICFILES_DIRS = ((os.path.join(BASE_DIR,'mystatic')),)
#STATIC_ROOT = os.path.join(BASE_DIR,'static')
#STATIC_URL = '/static/'
#MEDIA_ROOT = (os.path.join(BASE_DIR,'media'))
#MEDIA_URL = AWS_S3_CUSTOM_DOMAIN+'/media/'
TEMPLATE_DIRS = (os.path.join(BASE_DIR,'templates'),)
STATICFILES_LOCATION = 'static'
STATICFILES_STORAGE = 'myproject.s3_custom.StaticStorage'
STATIC_URL = AWS_S3_CUSTOM_DOMAIN+'/'+STATICFILES_LOCATION+'/'
MEDIAFILES_LOCATION = 'media'
MEDIA_URL = AWS_S3_CUSTOM_DOMAIN+'/'+MEDIAFILES_LOCATION+'/'
DEFAULT_FILE_STORAGE = 'myproject.s3_custom.MediaStorage'
#DEFAULT_FILE_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
#STATICFILES_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
# databases
....
.......
s3_custom.py
from storages.backends.s3boto import S3BotoStorage
import os
AWS_STORAGE_BUCKET_NAME = 'bucket name'
AWS_ACCESS_KEY_ID = 'key'
AWS_SECRET_ACCESS_KEY = 'access key'
AWS_S3_CUSTOM_DOMAIN ='https://bucketname.s3.amazonaws.com'
class StaticStorage(S3BotoStorage):
location = 'static'
class MediaStorage(S3BotoStorage):
location = 'media'
когда я запускаю это в терминале python manage.py collectstatic
Ошибка
File "manage.py", line 10, in <module>
execute_from_command_line(sys.argv)
File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 385, in execute_from_command_line
utility.execute()
File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 377, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 288, in run_from_argv
self.execute(*args, **options.__dict__)
File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 338, in execute
output = self.handle(*args, **options)
File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 533, in handle
return self.handle_noargs(**options)
File "/usr/local/lib/python2.7/dist-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 168, in handle_noargs
collected = self.collect()
File "/usr/local/lib/python2.7/dist
-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 107, in collect
handler(path, prefixed_path, storage)
File "/usr/local/lib/python2.7/dist-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 305, in copy_file
if not self.delete_file(path, prefixed_path, source_storage):
File "/usr/local/lib/python2.7/dist-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 218, in delete_file
if self.storage.exists(prefixed_path):
File "/usr/local/lib/python2.7/dist-packages/storages/backends/s3boto.py", line 414, in exists
return k.exists()
File "/usr/local/lib/python2.7/dist-packages/boto/s3/key.py", line 539, in exists
return bool(self.bucket.lookup(self.name, headers=headers))
File "/usr/local/lib/python2.7/dist-packages/boto/s3/bucket.py", line 142, in lookup
return self.get_key(key_name, headers=headers)
File "/usr/local/lib/python2.7/dist-packages/boto/s3/bucket.py", line 192, in get_key
key, resp = self._get_key_internal(key_name, headers, query_args_l)
File "/usr/local/lib/python2.7/dist-packages/boto/s3/bucket.py", line 199, in _get_key_internal
query_args=query_args)
File "/usr/local/lib/python2.7/dist-packages/boto/s3/connection.py", line 652, in make_request
auth_path = self.calling_format.build_auth_path(bucket, key)
File "/usr/local/lib/python2.7/dist-packages/boto/s3/connection.py", line 94, in build_auth_path
path = '/' + bucket
TypeError: cannot concatenate 'str' and 'NoneType' objects
Пожалуйста, помогите мне, что я делаю неправильно, я даю свои драгоценные 4 часа, но я не могу найти ошибку
python manage.py shell
, а затем введетеfrom django.conf import settings
иprint settings.AWS_STORAGE_BUCKET_NAME
, будет ли напечатано правильное имя корзины, как указано в настройках? - person sthzg   schedule 25.04.2015