django ckeditor图片上传

时间:2019-02-22 11:52:40

标签: django ckeditor

我在网站上使用Django-ckeditor。

我特别使用

RichTextUploadingField()

在我的模型中。和其他选项都可以正常工作,除了图片上传。

1。错误消息

我收到

的错误消息

“服务器响应不正确”,尤其是chrome devtools指出


ckeditor.js:21 [CKEDITOR]错误代码:filetools-response-error。

ckeditor.js:21 [CKEDITOR]有关此错误的更多信息,请转到https://docs.ckeditor.com/ckeditor4/docs/#!/guide/dev_errors-section-filetools-response-error


2。猜猜

我已尝试在管理页面中使用ckeditor上传图像,

在django中被授权为超级用户,它可以工作。

但是,以普通用户帐户登录,我已经尝试过相同的操作,但是它不起作用。

所以我的猜测是它存在某种授权问题。但是我不知道在django-ckeditor中从哪里开始调试。

我应该检查什么?预先感谢。

3 个答案:

答案 0 :(得分:1)

在项目 urls.py 中添加以下导入:

from django.contrib.auth.decorators import login_required
from django.views.decorators.cache import never_cache
from ckeditor_uploader import views as ckeditor_views

替换 urls.py 中的以下行:

path('ckeditor/', include('ckeditor_uploader.urls')),

path('ckeditor/upload/', login_required(ckeditor_views.upload), name='ckeditor_upload'),
path('ckeditor/browse/', never_cache(login_required(ckeditor_views.browse)), name='ckeditor_browse'),

答案 1 :(得分:0)

之所以发生这种情况,是因为默认的URL用@staff_member_required(https://github.com/django-ckeditor/django-ckeditor/blob/master/ckeditor_uploader/urls.py)修饰。为了避免这种情况,您可以像这样url(r'^ckeditor/', include('ckeditor_uploader.urls'))那样包含网址,而无需使用login_required装饰器在urls.py中一个接一个地定义它们:

from django.conf.urls import url
from django.contrib.admin.views.decorators import login_required

from ckeditor_uploader import views

urlpatterns = [
     .....your other urls
    url(r'^ckeditor/upload/', login_requred(views.upload), name='ckeditor_upload'),
    url(r'^ckeditor/browse/', never_cache(login_requred(views.browse)), name='ckeditor_browse'),
]

像这样,您将上传内容限制为已登录的所有用户。

答案 2 :(得分:0)

如果您以管理员身份登录(localhost:8000/admin),它就可以工作,很简单。