Задать вопрос
@nurzhannogerbek

Как добавить возможность загружать изображения в django-ckeditor?

Здравствуйте! Помогите разобраться.

Установил приложение django-ckeditor для текстового поля. Хочу дать возможность загружать изображения из компьютера пользователя. Проблема в том что нет кнопки для загрузки изображения из компьютера, так же нет возможно добавить (точнее ничего не вводится) url адрес изображения из интернета. Что упустил?

1) Установил ckeditor и ckeditor_uploader в INSTALLED_APPS setting.py.

2) Запустил команду collectstatic .

urls.py:
urlpatterns = i18n_patterns(
    # Django Ckeditor
    url(r'^ckeditor/', include('ckeditor_uploader.urls')),
)
if settings.DEBUG:
   urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
   urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)


settings.py:
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')]
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static_root')
MEDIA_ROOT = os.path.join(BASE_DIR, 'media_root')
MEDIA_URL = '/media/'

CKEDITOR_UPLOAD_PATH = "uploads/"
CKEDITOR_JQUERY_URL = "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"
CKEDITOR_IMAGE_BACKEND = 'pillow'
CKEDITOR_UPLOAD_SLUGIFY_FILENAME = False
CKEDITOR_RESTRICT_BY_USER = True
CKEDITOR_BROWSE_SHOW_DIRS = True


models.py:
class Post(models.Model):
    content= RichTextUploadingField(_('Description'))


forms.py:
class PostForm(forms.ModelForm):
    class Meta:
        model = Post
        fields = ('description',)
        widgets = {
           'description': CKEditorUploadingWidget()
        }


views.py:
def post_add(request):
    data = dict()
    if request.method == 'POST':
        post_form = PostForm(request.POST)
        if post_form.is_valid():
           post = post_form.save(commit=False)
           ***Some code***
           post.save()
           data['form_is_valid'] = True
           posts = Post.objects.all()
           context = {'posts ': posts }
           context.update(csrf(request))
           data['html_post'] = render_to_string('project/post_list.html', context)
        else:
            data['form_is_valid'] = False
    else:
        post_form = PostForm()
    context = {'post_form': post_form}
    data['html_post_form'] = render_to_string('project/post_add.html', context, request=request)
    return JsonResponse(data)

6) post_add.html:
{% load widget_tweaks %}

  {{ post_form.media }}

  <form method="post" action="">
      {% csrf_token %}

      {% for field in post_form %}
         {% render_field field class="form-control" %}
      {% endfor %}

      <button type="submit">Create</button>
    </form>

<script type="text/javascript" src="{% static "ckeditor/ckeditor-init.js" %}"></script>

<script type="text/javascript" src="{% static "ckeditor/ckeditor/ckeditor.js" %}"></script>


P.S. Если убрать из INSTALLED_APPS ckeditor_uploader, то загрузка через интернет работает. Но как добавить возможность загружать из компьютера?
  • Вопрос задан
  • 1424 просмотра
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 1
@RUNAMAN
а директорию создали? доступ туда есть?
"ваше приложение"/media/images
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы