2017-08-23 53 views
0

我想用dropbox來使用django-storage。 我所做的一切都像在文檔:Django Dropbox存儲

set DEFAULT_FILE_STORAGE = 'storages.backends.dropbox.DropBoxStorage', 

DROPBOX_OAUTH2_TOKEN = 'MY_ACCESS_TOKEN' 
DROPBOX_ROOT_PATH = 'media' 

但是,當我試圖在Heroku上上傳圖片,我得到了在日誌中的錯誤:

TypeError: expected request_binary as binary type, got 
class'django.core.files.uploadedfile.InMemoryUploadedFile' 

完全回溯:

2017-08-23T09:11:48.956735+00:00 app[web.1]: [2017-08-23 12:11:48,874] exception: ERROR - Internal Server Error: /en/create/ 2017-08-23T09:11:48.956748+00:00 app[web.1]: Traceback (most recent call last): 2017-08-23T09:11:48.956749+00:00 app[web.1]: File /app/.heroku/python/lib/python3.5/site-packages/django/core/handlers/exception.py", line 41, in inner 2017-08-23T09:11:48.956750+00:00 app[web.1]: response = get_response(request) 2017-08-23T09:11:48.956751+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.5/site-packages/django/core/handlers/base.py", line 187, in _get_response 2017-08-23T09:11:48.956752+00:00 app[web.1]: response = self.process_exception_by_middleware(e, request) 2017-08-23T09:11:48.956752+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.5/site-packages/django/core/handlers/base.py", line 185, in _get_response 2017-08-23T09:11:48.956753+00:00 app[web.1]: response = wrapped_callback(request, *callback_args, **callback_kwargs) 2017-08-23T09:11:48.956754+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.5/site-packages/django/views/generic/base.py", line 68, in view 2017-08-23T09:11:48.956754+00:00 app[web.1]: return self.dispatch(request, *args, **kwargs) 2017-08-23T09:11:48.956755+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.5/site-packages/django/views/generic/base.py", line 88, in dispatch 2017-08-23T09:11:48.956756+00:00 app[web.1]: return handler(request, *args, **kwargs) 2017-08-23T09:11:48.956756+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.5/site-packages/django/views/generic/edit.py", line 217, in post 2017-08-23T09:11:48.956757+00:00 app[web.1]: return super(BaseCreateView, self).post(request, *args, **kwargs) 2017-08-23T09:11:48.956760+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.5/site-packages/django/views/generic/edit.py", line 183, in post 2017-08-23T09:11:48.956760+00:00 app[web.1]: return self.form_valid(form) 2017-08-23T09:11:48.956761+00:00 app[web.1]: File "/app/articles/views.py", line 255, in form_valid 2017-08-23T09:11:48.956762+00:00 app[web.1]: articleimages.save() 2017-08-23T09:11:48.956762+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.5/site-packages/django/forms/models.py", line 649, in save 2017-08-23T09:11:48.956763+00:00 app[web.1]: return self.save_existing_objects(commit) + self.save_new_objects(commit) 2017-08-23T09:11:48.956763+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.5/site-packages/django/forms/models.py", line 783, in save_new_objects 2017-08-23T09:11:48.956763+00:00 app[web.1]: self.new_objects.append(self.save_new(form, commit=commit)) 2017-08-23T09:11:48.956764+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.5/site-packages/django/forms/models.py", line 932, in save_new 2017-08-23T09:11:48.956767+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.5/site-packages/django/db/models/base.py", line 836, in save_base 2017-08-23T09:11:48.956767+00:00 app[web.1]: updated = self._save_table(raw, cls, force_insert, force_update, using, update_fields) 2017-08-23T09:11:48.956768+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.5/site-packages/django/db/models/base.py", line 922, in _save_table 2017-08-23T09:11:48.956765+00:00 app[web.1]: obj.save() 2017-08-23T09:11:48.956765+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.5/site-packages/django/db/models/base.py", line 806, in save 2017-08-23T09:11:48.956766+00:00 app[web.1]: force_update=force_update, update_fields=update_fields) 2017-08-23T09:11:48.956772+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.5/site-packages/django/db/models/sql/compiler.py", line 1098, in execute_sql 2017-08-23T09:11:48.956769+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.5/site-packages/django/db/models/base.py", line 961, in _do_insert 2017-08-23T09:11:48.956770+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.5/site-packages/django/db/models/manager.py", line 85, in manager_method 2017-08-23T09:11:48.956769+00:00 app[web.1]: using=using, raw=raw) 2017-08-23T09:11:48.956770+00:00 app[web.1]: return getattr(self.get_queryset(), name)(*args, **kwargs) 2017-08-23T09:11:48.956771+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.5/site-packages/django/db/models/query.py", line 1061, in _insert 2017-08-23T09:11:48.956772+00:00 app[web.1]: return query.get_compiler(using=using).execute_sql(return_id) 2017-08-23T09:11:48.956768+00:00 app[web.1]: result = self._do_insert(cls._base_manager, using, fields, update_pk, raw) 2017-08-23T09:11:48.956774+00:00 app[web.1]: for obj in self.query.objs 2017-08-23T09:11:48.956773+00:00 app[web.1]: for sql, params in self.as_sql(): 2017-08-23T09:11:48.956773+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.5/site-packages/django/db/models/sql/compiler.py", line 1051, in as_sql 2017-08-23T09:11:48.956774+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.5/site-packages/django/db/models/sql/compiler.py", line 1051, in 2017-08-23T09:11:48.956776+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.5/site-packages/django/db/models/sql/compiler.py", line 1050, in 2017-08-23T09:11:48.956775+00:00 app[web.1]: for obj in self.query.objs 2017-08-23T09:11:48.956776+00:00 app[web.1]: [self.prepare_value(field, self.pre_save_val(field, obj)) for field in fields] 2017-08-23T09:11:48.956777+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.5/site-packages/django/db/models/sql/compiler.py", line 1000, in pre_save_val 2017-08-23T09:11:48.956779+00:00 app[web.1]: file.save(file.name, file.file, save=False) 2017-08-23T09:11:48.956779+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.5/site-packages/django/db/models/fields/files.py", line 95, in save 2017-08-23T09:11:48.956780+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.5/site-packages/django/core/files/storage.py", line 54, in save 2017-08-23T09:11:48.956787+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.5/site-packages/storages/backends/dropbox.py", line 111, in _save 2017-08-23T09:11:48.956786+00:00 app[web.1]: return self._save(name, content) 2017-08-23T09:11:48.956780+00:00 app[web.1]: self.name = self.storage.save(name, content, max_length=self.field.max_length) 2017-08-23T09:11:48.956777+00:00 app[web.1]: return field.pre_save(obj, add=True) 2017-08-23T09:11:48.956789+00:00 app[web.1]: f, 2017-08-23T09:11:48.956778+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.5/site-packages/django/db/models/fields/files.py", line 297, in pre_save 2017-08-23T09:11:48.956790+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.5/site-packages/dropbox/dropbox.py", line 234, in request 2017-08-23T09:11:48.956790+00:00 app[web.1]: timeout=timeout) 2017-08-23T09:11:48.956791+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.5/site-packages/dropbox/dropbox.py", line 325, in request_json_string_with_retry 2017-08-23T09:11:48.956788+00:00 app[web.1]: self.client.files_upload(content, self._full_path(name)) 2017-08-23T09:11:48.956788+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.5/site-packages/dropbox/base.py", line 1267, in files_upload 2017-08-23T09:11:48.956792+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.5/site-packages/dropbox/dropbox.py", line 369, in request_json_string 2017-08-23T09:11:48.956794+00:00 app[web.1]: TypeError: expected request_binary as binary type, got class 'django.core.files.uploadedfile.InMemoryUploadedFile'>

+0

如果你想調試幫助,你應該發佈完整的回溯,而不僅僅是異常。 –

回答

0

看起來你可能在DropBoxStorage後端遇到了一個錯誤。例如,請參閱issue 378。這個問題已得到解決,但自那以後還沒有發佈。您可以嘗試安裝主分支以查看它是否可用。