django 整合 kindeditor ,解决上传图片 csrf 验证问题

方法一:修改 kindeditor.js 文件

django  在整合任何的在线编辑器的时候,上传图片通常都会遇到一个csrf 验证失败的错误。

我以前的解决方法是  ,但是那始终是不安全的。还好找到了新的解决方法 ,伟大的 stackoverflow

以kindeditor 为例,找到主 js文件 ,如:

/home/ubuntu/ndis/static/editor/kindeditor/kindeditor.js打开,


        // NEW CODE
        var csrfitems = document.getElementsByName("csrfmiddlewaretoken");
        var csrftoken = "";
        if(csrfitems.length > 0)
        {
                 csrftoken = csrfitems[0].value;
         }
            
        // END

        var html = [
            '<div class="ke-inline-block ' + cls + '">',
            (options.target ? '' : '<iframe name="' + target + '" style="display:none;"></iframe>'),
            (options.form ? '<div class="ke-upload-area">' : '<form class="ke-upload-area ke-form" method="post" enctype="multipart/form-data" target="' + target + '" action="' + url + '">'),
            '<span class="ke-button-common">',
            hiddenElements.join(''),
            // NEW CODE
            '<input type="hidden" name="csrfmiddlewaretoken" value="',csrftoken,'"/>',
            // END
            '<input type="button" class="ke-button-common ke-button" value="' + title + '" />',
            '</span>',红色部分的代码就是我们自己加入的代码,可以让editor在上传图片的同时也post上去了csrf。



新加:

方法二:><! 在kindeditor 文档中查到了一个API:

extraFileUploadParams
上传图片、Flash、视音频、文件时,支持添加别的参数一并传到服务器。

•数据类型: Array
•默认值: {}
这就更好了。

修改 kindeditor.html 文件:


<script type="text/javascript">
    var csrfitems = document.getElementsByName("csrfmiddlewaretoken");
    var csrftoken = "";
    if(csrfitems.length > 0)
    {
        csrftoken = csrfitems[0].value;
    }
        
    var editor ;
    KindEditor.ready(function(K) { 
        var options = { 
            cssPath : ('{{STATIC_URL}}editor/kindeditor/themes/default/default.css', 
                       '{{STATIC_URL}}editor/kindeditor/plugins/code/prettify.css'),
            width : '680px', 
            height : '400px', 
            filterMode : true,
            uploadJson : K.undef('/upload/'),
            extraFileUploadParams : {
                csrfmiddlewaretoken:csrftoken
            }
       }; 
        editor = K.create('textarea[name="content"]', options); 
    });                     
</script>  这样子更好一些,不用去改动kindeditor的源码。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值