#django #amazon-s3 #ckeditor #digital-ocean
Вопрос:
Я создаю приложение django. Я использую пространство DigitalOcean для хранения своих медиафайлов. Я использую Django Ckeditor, чтобы позволить администратору писать контент с хорошей текстовой областью и разрешать им загружать некоторые изображения.
Загрузка изображения работает (в папке:» modules_images
«, как вы можете видеть в моем коде). Проблема возникает, когда администратор хочет нажать на кнопку «просмотреть сервер». Он получает следующую ошибку :
NoSuchKey at /ckeditor/browse/
An error occurred (NoSuchKey) when calling the ListObjects operation: Unknown
Я потратил много времени на поиск людей, которые уже сталкивались с этой проблемой, но ни у кого не было точно такой же проблемы (люди, у которых возникают проблемы при просмотре файлов, как правило, также сталкиваются с проблемами при загрузке файлов), и ни один из ответов мне не помог.
Вот мой urls.py :
urlpatterns = [
...
path('admin/', admin.site.urls, name="admin"),
path('chaining/', include('smart_selects.urls')),
path('ckeditor/', include('ckeditor_uploader.urls')),
] static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
Вот мои настройки ckeditor в settings.py :
CKEDITOR_UPLOAD_PATH = "modules_images/"
CKEDITOR_CONFIGS = {
'default': {
'skin': 'moono',
# 'skin': 'office2013',
'toolbar_Basic': [
['Source', '-', 'Bold', 'Italic']
],
'toolbar_YourCustomToolbarConfig': [
{'name': 'document', 'items': ['Source', '-', 'Save', 'NewPage', 'Preview', 'Print', '-', 'Templates']},
{'name': 'clipboard', 'items': ['Cut', 'Copy', 'Paste', 'PasteText', 'PasteFromWord', '-', 'Undo', 'Redo']},
{'name': 'editing', 'items': ['Find', 'Replace', '-', 'SelectAll', '-', 'Scayt' ]},
{'name': 'forms',
'items': ['Form', 'Checkbox', 'Radio', 'TextField', 'Textarea', 'Select', 'Button', 'ImageButton',
'HiddenField']},
'/',
{'name': 'basicstyles',
'items': ['Bold', 'Italic', 'Underline', 'Strike', 'Strikethrough', 'Subscript', 'Superscript', '-', 'CopyFormatting', 'RemoveFormat']},
{'name': 'paragraph',
'items': ['NumberedList', 'BulletedList', '-', 'Outdent', 'Indent', '-', 'Blockquote', 'CreateDiv', '-',
'JustifyLeft', 'JustifyCenter', 'JustifyRight', 'JustifyBlock', '-', 'BidiLtr', 'BidiRtl',
'Language']},
{'name': 'links', 'items': ['Link', 'Unlink', 'Anchor']},
{'name': 'insert',
'items': ['Image', 'Flash', 'Table', 'HorizontalRule', 'Smiley', 'SpecialChar', 'PageBreak', 'Iframe']},
'/',
{'name': 'styles', 'items': ['Styles', 'Format', 'Font', 'FontSize']},
{'name': 'colors', 'items': ['TextColor', 'BGColor']},
{'name': 'tools', 'items': ['Maximize', 'ShowBlocks']},
{'name': 'about', 'items': ['About']},
'/', # put this to force next toolbar on new line
{'name': 'yourcustomtools', 'items': [
# put the name of your editor.ui.addButton here
'Preview',
'Maximize',
]},
],
'toolbar': 'YourCustomToolbarConfig', # put selected toolbar config here
# 'toolbarGroups': [{ 'name': 'document', 'groups': [ 'mode', 'document', 'doctools' ] }],
# 'height': 291,
# 'width': '100%',
# 'filebrowserWindowHeight': 725,
# 'filebrowserWindowWidth': 940,
# 'toolbarCanCollapse': True,
# 'mathJaxLib': '//cdn.mathjax.org/mathjax/2.2-latest/MathJax.js?config=TeX-AMS_HTML',
'tabSpaces': 4,
'extraPlugins': ','.join([
'uploadimage', # the upload image feature
# your extra plugins here
'div',
'autolink',
'autoembed',
'embedsemantic',
'autogrow',
# 'devtools',
'widget',
'lineutils',
'clipboard',
'dialog',
'dialogui',
'elementspath'
]),
}
}
And here is my Space configs in settings.py :
# SETTINGS FOR S3 SPACE
AWS_ACCESS_KEY_ID = '<key_id>'
AWS_SECRET_ACCESS_KEY = '<secre_access_key>'
AWS_STORAGE_BUCKET_NAME = '<bucket_name>'
AWS_DEFAULT_ACL = 'public-read'
AWS_S3_ENDPOINT_URL = 'https://<bucket_name>.<region_name>.digitaloceanspaces.com/'
AWS_S3_OBJECT_PARAMETERS = {
'CacheControl': 'max-age=86400',
}
AWS_QUERYSTRING_AUTH = False
MEDIA_URL = AWS_S3_ENDPOINT_URL
MEDIA_ROOT = AWS_S3_ENDPOINT_URL
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
И, конечно, «ckeditor» и «ckeditor_uploader» находятся в моих установленных приложениях
Я не вижу, что я делаю не так в этом процессе. Если бы кто-нибудь мог мне помочь, было бы здорово поблагодарить за чтение