2014-12-22 3 views
1

Я использую ekeditor в одном из моих проектов Python/Django. Я разрешаю редактор с create_editor('id_of_filed'), enter image description here, но я хочу кнопку загрузки изображения в этом редакторе, и я не знаю, как это сделать. Я прочитал документы ckeditor, но эти документы в основном предназначены для PHP и .NET. Но я хочу это для Django (Однако этот редактор использует JS, поэтому язык не имеет значения). У меня найти этот код в ДокументахВключить кнопку загрузки изображения в ckeditor в Python/Django

CKEDITOR.replace('editor1', 
    { 
     filebrowserBrowseUrl : '/browser/browse.php', 
     filebrowserUploadUrl : '/uploader/upload.php' 
    }); 

Но в моем случае, какие файлы я должен упомянуть здесь, потому что я не использую PHP, но Python/Django вместо этого.

ответ

1

По умолчанию CKEditor не включает в себя файловый браузер или загрузчик. Вы можете, однако, create a custom file browser или использовать существующий продукт, такой как CKFinder, а затем настроить CKEditor, чтобы использовать его, используя его file browser API.

Код, который вы указываете выше, настраивает CKEditor для использования такого настраиваемого файлового браузера, который обрабатывается в некоторых файлах browse.php и upload.php, но это не волшебство - это просто пользовательские скрипты какого-либо файла браузера. В вашем случае вы можете заменить их своей собственной функцией загрузки файлов или готовым решением, которое уже доступно.

1

Я недавно решил ту же проблему. В первую очередь вкладка «Загрузить» скрыта в диалоговом окне плагина изображения. Вам нужно выполнить поиск закладки для загрузки в файле диалога image.js и изменить поле «hidden» на false.

Теперь для Django/Python вам необходимо указать URL-адрес представления, который будет обрабатывать загрузку изображений. Для ex -/editor/upload.

config.filebrowserImageUploadUrl = '/editor/upload/'; 

в файле config.js.

В представлении указан код, в котором вы должны обрабатывать извлечение файла из запроса и сохранять его в медиа-каталоге проекта Django.

Вы можете получить помощь от django-ckeditor.I прочитал полный код django-ckeditor и реализовал функцию загрузки, используя способ, которым django-ckeditor выполнял это.

Также еще одна вещь, django-ckeditor не обрабатывает защиту csrf при загрузке изображений, поэтому вам, возможно, придется что-то изменить на лицевой стороне, чтобы обрабатывать данные POST, которые вы будете отправлять на бэкэнд django. Для этого проверьте эту ссылку -

How to add a field to POST values in CKeditor upload

Сначала попробуйте это и дайте мне знать, если вы столкнулись с какими-либо проблемами.

1

У меня была такая же проблема, как и вы. На GitHub странице django-ckeditor они пишут (курсив мой собственный):

Обеспечивает RichTextField, RichTextUploadingField, CKEditorWidget и CKEditorUploadingWidget использованием CKEditor с загрузкой изображений и просмотра поддержка включена.

В моем forms.py для моего текста я имел

class BlogPostForm(forms.ModelForm): 
    text = forms.CharField(widget=CKEditorWidget()) 

, который дал мне тот же редактор, как у вас. Я изменил его

class BlogPostForm(forms.ModelForm): 
    text = forms.CharField(widget=CKEditorUploadingWidget()) 

Это дало мне вкладку, чтобы загрузить изображение с компьютера, который затем был загружен на мой MEDIA_URL и служил, как и следовало ожидать.

Смежные вопросы