Evgenii Legotckoi
10 ноября 2017 г. 13:43

Django - Урок 028. Подключение возможности загружать изображения для пользователей без статуса персонала в CKEditor

В большей части сайта я использую самописный WYSIWYG редактор, поэтому он не такой продвинутый как хотелось бы. А вот для написания статей на сайте, используется CKEditor , очень мощный и хороший редактор. Нюанс в том, что написание статей доступно для всех зарегистрированных пользователей сайта. Но по умолчанию CKEditor позволяет загружать изображения только пользователям со статусом персонала.

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

Немного полистав документацию, удалось исправить эту проблему. И честно говоря смотрится решение довольно странно, хотя и предлагается в официальной документации на редактор.


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

  1. urlpatterns = [
  2. url(r'^ckeditor/', include('ckeditor_uploader.urls')),
  3. ]

А если заглянуть в исходники ckeditor , то можно увидеть следующее

  1. urlpatterns = patterns(
  2. '',
  3. url(r'^upload/', staff_member_required(views.upload), name='ckeditor_upload'),
  4. url(r'^browse/', never_cache(staff_member_required(views.browse)), name='ckeditor_browse'),
  5. )

Так вот функция staff_member_required как вы уже поняли, ограничивает доступ пользователей к данному функционалу. То есть только персонал может загружать изображения и искать изображения через файловый браузер на сайте.

И что нам предлагает официальная документация вместо какого-нибудь флага настроек?
Правильно, записать напрямую пути к вьюшкам, то есть таким образом.

  1. urlpatterns = [
  2. url(r'^upload/', login_required(upload), name='ckeditor_upload'),
  3. url(r'^browse/', login_required(never_cache(browse)), name='ckeditor_browse'),
  4. ]

То есть выкидываем staff_member_required и заменяем его на login_required, чтобы дать доступ всем пользователям сайта, кроме неавторизованных.

На мой взгляд, довольно странное решение, когда это можно было сделать с помощью переменной в настройках. Это слегка неудобно и нелогично.

Для Django рекомендую VDS-сервера хостера Timeweb .

Вам это нравится? Поделитесь в социальных сетях!

СЗ
  • 17 октября 2019 г. 20:53

Ай малаца! Спасибо))

B
  • 16 февраля 2020 г. 20:29

Здравстсвуйте Евгений, непонятно мне где эти исходники найти?

Evgenii Legotckoi
  • 16 февраля 2020 г. 20:35

Добрый день.
На GitHub исходники, можете посмотреть в официальном репозитории

B
  • 17 февраля 2020 г. 0:40

Спасибо!!!

Комментарии

Только авторизованные пользователи могут публиковать комментарии.
Пожалуйста, авторизуйтесь или зарегистрируйтесь