上传服务器响应失败,Django CKEditor 上传图片提示“不正确的服务器响应”的解决办法...
开发环境
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 登录页面,也就是需要验证登录才能上传,那怎么才能取消登录验证呢?
查看 ckeditor 源码
..\Lib\site-packages\ckeditor_uploader\urls.py
from __future__ import absolute_import
import django
from django.conf.urls import url
from django.contrib.admin.views.decorators import staff_member_required
from django.views.decorators.cache import never_cache
from . import views
if django.VERSION >= (1, 8):
urlpatterns = [
url(r'^upload/', staff_member_required(views.upload), name='ckeditor_upload'),
# url(r'^upload/', views.upload, name='ckeditor_upload'), # ckeditor 上传文件不验证登录状态
url(r'^browse/', never_cache(staff_member_required(views.browse)), name='ckeditor_browse'),
]
else:
from django.conf.urls import patterns
urlpatterns = patterns(
'',
url(r'^upload/', staff_member_required(views.upload), name='ckeditor_upload'),
url(r'^browse/', never_cache(staff_member_required(views.browse)), name='ckeditor_browse'),
)
在上面第 12 行代码这里可以看到,views.upload 还加一个 staff_member_required 验证,点进去看一下:
..\Lib\site-packages\django\contrib\admin\views\decorators.py
from django.contrib.auth import REDIRECT_FIELD_NAME
from django.contrib.auth.decorators import user_passes_test
def staff_member_required(view_func=None, redirect_field_name=REDIRECT_FIELD_NAME,
login_url='admin:login'):
"""
Decorator for views that checks that the user is logged in and is a staff
member, redirecting to the login page if necessary.
"""
actual_decorator = user_passes_test(
lambda u: u.is_active and u.is_staff,
login_url=login_url,
redirect_field_name=redirect_field_name
)
if view_func:
return actual_decorator(view_func)
return actual_decorator
从 staff_member_required 可以看出验证了 lambda u: u.is_active and u.is_staff 状态,所以我们要想去掉 ckeditor 的上传文件的验证,就需要放开登录验证,通过修改 ckeditor 上传路由的那行代码,能关掉登录验证。
解决方法
..\Lib\site-packages\ckeditor_uploader\urls.py 下把 staff_member_required 去掉:
from django.contrib.admin.views.decorators import staff_member_required
urlpatterns = [
# url(r'^upload/', staff_member_required(views.upload), name='ckeditor_upload'),
url(r'^upload/', views.upload, name='ckeditor_upload'), # ckeditor 上传文件不验证登录状态
url(r'^browse/', never_cache(staff_member_required(views.browse)), name='ckeditor_browse'),
]
也可以自己写一个验证规则,替换掉 staff_member_required。
staff_member_required 拓展
此函数可以拓展到任何一个路由上,做登录验证,也可以重写 staff_member_required 验证逻辑。
比如,本地的 media 文件需要登录了才能查看
# django 1.11.x
from django.conf.urls import url
from django.views.static import serve
from django.conf import settings
from django.contrib.admin.views.decorators import staff_member_required
from django.contrib.auth.decorators import login_required
urlpatterns = [
url(r'^media/(?P.*)$', staff_member_required(serve), {"document_root": settings.MEDIA_ROOT}),
]
# ..\Lib\site-packages\django\contrib\auth\decorators.py
def login_required(function=None, redirect_field_name=REDIRECT_FIELD_NAME, login_url=None):
"""
Decorator for views that checks that the user is logged in, redirecting
to the log-in page if necessary.
"""
actual_decorator = user_passes_test(
lambda u: u.is_authenticated,
login_url=login_url,
redirect_field_name=redirect_field_name
)
if function:
return actual_decorator(function)
return actual_decorator
上传服务器响应失败,Django CKEditor 上传图片提示“不正确的服务器响应”的解决办法...相关推荐
- 安卓上传文件php失败,android - php上传图片时 $_FILES为空
写了一个php上传的程序,用来接收安卓post上传过来的图片,接收到的$_FILES为空. 这个程序在之前的服务器上是可以的,程序没有改动的情况下,迁移到新的服务器后就不行了.原来的服务器php 5. ...
- php图片上传不现实路径指向错误,上传图片提示这个错误怎么办?
pic2里面报错的位置标出来了 pic.php ZwelL图片上传程序 上传文件: 允许上传的文件类型为:=implode(', ',$uptypes)?> pic2.php 已经成功上传 文件 ...
- FASTDFS上传文件时报错,org.csource.commom.MyException:getStoreStorage fail,error code : 28解决办法
原因:这是因为文件服务器上的磁盘空间不大于10%了 storage上的剩余磁盘空间必须在10%以上才能上传文件成功,否则上传失败. 解决方法: 拓展服务器的内存空间,也可以删除一些不用的文件
- 使用jquery文件上传控件Uploadify来异步上传图片
1.项目中需要图片的异步上传,度娘之后发现有一个插件可以完成这个需求,即是:Uploadify 下面是这个异步上传的插件的一个简单介绍: 基于jquery的文件上传控件,支持ajax无刷新上传,多个文 ...
- FTPClient上传文件storeFile失败,没有异常,切换目录操作可以成功
FTPClient上传文件storeFile失败,没有异常,切换目录操作可以成功 解决方法: 有没有设置被动模式. 防火墙 有没有设置被动模式 要执行下面的语句 ftpClient.enterLoca ...
- 两步快速解决浏览器上传本地文件失败问题
两步快速解决浏览器上传本地文件失败问题 学校教学平台上传作业总是没法弹出本地目录,经过查资料和试验,我总结了解决方法,只需两步. 使用到的浏览器 ie浏览器 目录 两步快速解决浏览器上传本地文件失败问 ...
- 上传文件连接失败问题
上传文件连接失败 问题发现 想要从本机上上传文件到虚拟机的ubuntu系统上,尝试使用filezilla来连接上传,但是显示连接错误. ifconfig命令检查ip是否输入错误.关闭防火墙.修改ssh ...
- 文件上传下载配置失败
1.multipartResolver注册失败,此依赖导入后仍无效 <!--文件上传--><dependency><groupId>commons-fileuplo ...
- [ArcGIS Server] 错误:上传服务定义失败
问题 上传的服务 上传服务定义失败 ERROR:the server's publishing job didn't succeed 执行(UploadServiceDefinition)失败 问题解 ...
最新文章
- 微型角度编码器 : KYTB-1503-1024
- python 权限修饰符
- “365算法每日学计划”:03打卡-贪心算法
- [教程]发一个iPhone收发邮件设置(163、126邮箱)
- uvalive 3135 Argus
- C#实现二叉树--二叉链表结构
- 【6】nagios从零学习使用 - centreon发送邮件报警
- mapreduce之partition分区
- PWN-PRACTICE-BUUCTF-4
- 计算机网络之数据链路层:8、介质访问控制之信道划分介质访问控制
- awk正则匹配nginx日志【原创】
- 使用隐含参数testMappingSpeed排查GoldenGate抽取慢的步骤
- STM32 常见的问题解决
- php任意地方关闭弹窗,vue和jq中实现点击任意地方关闭弹窗
- 三、JAVA流程控制(选择结构if、while、for、switch)
- 不是技术牛人,如何拿到国内IT巨头的Offer
- MATLAB泰勒展开
- 考研计算机专业流程,计算机专业考研复试基本流程-文都教育.doc
- 第四章 姜诸儿意气风发登君位 鲁桓公窝囊枉死彭生手
- 控制台报错:java.security.InvalidKeyException: Illegal key size