【问题标题】:django ckeditor image uploaddjango ckeditor 图片上传
【发布时间】:2019-07-16 12:19:33
【问题描述】:

我在我的网站中使用 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 中从哪里开始调试。

我应该检查什么?提前致谢。

【问题讨论】:

  • 您是说不能通过具有员工权限的管理面板或前端的表单上传图片?
  • 通过管理面板,有员工权限(超级用户),我可以上传图像。但是,在前端形式中,我不能。

标签: django ckeditor


【解决方案1】:

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

from django.conf.urls import url
from django.contrib.auth.decorators import login_required

from ckeditor_uploader import views

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

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

【讨论】:

  • 我已将这些添加到我的 url,但它不起作用...... :( 特别是,在本地环境中,它工作正常。但是在 web 托管环境中,我使用 pythonanywhere,它没有工作。还有什么具体的事情需要考虑吗?非常感谢您的评论。谢谢。
  • @dongminkim 你说的工作量是什么意思?您无法访问网址或其他内容?
  • 我已经访问了 url 文件并修复了你提到的代码。在本地环境中,一切正常。但是,当我部署(到 pythonanywhere)时,它不起作用(它给了我“服务器响应不正确”的警报消息)。
  • 你是怎么得到这个错误的?当您访问网址或尝试上传内容时?
  • 这个答案很有帮助。但是对于当前版本的 django,你必须通过这种方式导入 login_required:from django.contrib.auth.decorators import login_required。还要从 django.views.decorators.cache import never_cache 导入,并记住在图像上传适用于所有用户之前删除从 CKEditor 文档中获得的 path('ckeditor/', include('ckeditor_uploader.urls'))。
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    在项目 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'),
    

    【讨论】:

      猜你喜欢
      • 2020-06-07
      • 2013-06-05
      • 2017-10-12
      • 2016-09-19
      • 2014-05-03
      • 2010-11-30
      • 2013-02-05
      • 2011-01-08
      • 1970-01-01
      相关资源
      最近更新 更多