2016-07-10 33 views
0

Ich habe eine Django App auf Heroku gehostet und ich versuche Mediendateien auf AWS S3 buket hochzuladen. Wenn ich lade ich den Fehler „nicht verketten‚str‘und‚NoneType‘Objekte“Django Media Uploads mit AWS S3 auf Heroku TypeError

Settings.py

INSTALLED_APPS = [ 
    ... 
    'storages', 
    ... 
] 

AWS_ACCESS_KEY_ID = os.environ.get('AWS_ACCESS_KEY_ID') 
AWS_SECRET_ACCESS_KEY = os.environ.get('AWS_SECRET_ACCESS_KEY') 
S3_STORAGE_BUCKET_NAME = 'MyBucketName' 
S3_URL = 'https://%s.s3.amazonaws.com' % S3_STORAGE_BUCKET_NAME 

DEFAULT_FILE_STORAGE = 'storages.backends.s3boto.S3BotoStorage' 

MEDIA_URL = S3_URL + '/media/' 

Fehler Seite

Django Version:  1.9.5 
Exception Type:  TypeError 
Exception Value:  

cannot concatenate 'str' and 'NoneType' objects 

Exception Location:  /app/.heroku/python/lib/python2.7/site-packages/boto/s3/connection.py in build_auth_path, line 94 

.... 
.... 

     else: 

      return self.get_bucket_server(server, bucket) 

    def build_auth_path(self, bucket, key=''): 

     key = boto.utils.get_utf8_value(key) 

     path = '' 

     if bucket != '': 

--->  path = '/' + bucket 

     return path + '/%s' % urllib.parse.quote(key) 

    def build_path_base(self, bucket, key=''): 

     key = boto.utils.get_utf8_value(key) 

     return '/%s' % urllib.parse.quote(key) 
+0

AWS_STORAGE_BUCKET_NAME waren Sie rufen 'build_auth_path' werden muss' bucket' irgendwo ohne Einstellung. Können Sie dem 'bucket'-Argument einen Standardwert geben, wie Sie es mit' key' getan haben? – Chris

Antwort

0

Der Fehler erklärt, dass Sie nicht Zeichenfolge ausführen können Verkettung einer Zeichenkette '/' und eines Objekts, dessen Wert None ist. Überprüfen Sie den Variablenwert "Bucket".

+0

Wie setze ich die Bucket-Variable? als String in der Einstellungsdatei oder als Umgebungsvariable auf Heroku? –

0

fand ich das Problem, wie ich die Variable S3_STORAGE_BUCKET_NAME genannt und es sollte