django 1.11
django-ckeditor 5.3.1(CKEditor 4.7.3)
前端页面引用了 CKEditor 富文本编辑器,Django 未登录的时候上传文件就会报:"不正确的服务器响应"。
Incorrect Server Response
GET /admin/login/?next=/ckeditor/upload/ HTTP/1.1
从控制台可以看出来,会跳转到 admin 登录页面,也就是需要验证登录才能上传,那怎么才能取消登录验证呢?
..\Lib\site-packages\ckeditor_uploader\urls.py
在上面第 12 行代码这里可以看到,views.upload 还加一个 staff_member_required 验证,点进去看一下:
..\Lib\site-packages\django\contrib\admin\views\decorators.py
从 staff_member_required 可以看出验证了 lambda u: u.is_active and u.is_staff 状态,所以我们要想去掉 ckeditor 的上传文件的验证,就需要放开登录验证,通过修改 ckeditor 上传路由的那行代码,能关掉登录验证。
..\Lib\site-packages\ckeditor_uploader\urls.py 下把 staff_member_required 去掉:
也可以自己写一个验证规则,替换掉 staff_member_required。
此函数可以拓展到任何一个路由上,做登录验证,也可以重写 staff_member_required 验证逻辑。
比如,本地的 media 文件需要登录了才能查看
# django 1.11.x
# ..\Lib\site-packages\django\contrib\auth\decorators.py