带有jquery-tinymce图像上传插件的Django [英] Django with jquery-tinymce image upload plugin

查看:74
本文介绍了带有jquery-tinymce图像上传插件的Django的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已将 http://justboil.me/ 的jbimages安装到django项目的jquery-tinymce文件夹中用于从计算机获取本地图像。

I have installed jbimages from http://justboil.me/ into jquery-tinymce folder of my django project for getting local images from computer.

当我上传图像时,它会抛出错误,因为这比平时花费的时间更长。可能发生了错误。
显示脚本输出错误为 CSRF验证失败。请求中止。
但是我已经以dialog.htm的形式提供了{%csrf_token%}。

When I upload image, it is throwing the error as "This is taking longer than usual.An error may have occurred." It is showing the script output error as "CSRF verification failed. Request aborted." But i already gave {% csrf_token %} in the form of dialog.htm.

在选择图片后出现错误,如下所示:

Iam getting the error after selecting the image as shown below:

有人可以帮我摆脱这个问题吗?

Can anyone help me how to get rid of this issue?

推荐答案

好像表单是使用 POST 数据中包含 csrf_token

seems like the form is being posted using ajax. If you are using ajax to post the form make sure you include the csrf_token in the POST data. which in this case you are missing.

或者将以下脚本添加到 base.html 中,它将负责更新

Alternatively add the following script to your base.html and it will take care of updating the csrf_token for each Ajax request.

$(document).ajaxSend(function(event, xhr, settings) {
    function getCookie(name) {
        var cookieValue = null;
        if (document.cookie && document.cookie != '') {
            var cookies = document.cookie.split(';');
            for (var i = 0; i < cookies.length; i++) {
                var cookie = jQuery.trim(cookies[i]);
                // Does this cookie string begin with the name we want?
                if (cookie.substring(0, name.length + 1) == (name + '=')) {
                    cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
                    break;
                }   
            }   
        }   
        return cookieValue;
    }   
    function sameOrigin(url) {
        // url could be relative or scheme relative or absolute
        var host = document.location.host; // host + port
        var protocol = document.location.protocol;
        var sr_origin = '//' + host;
        var origin = protocol + sr_origin;
        // Allow absolute or scheme relative URLs to same origin
        return (url == origin || url.slice(0, origin.length + 1) == origin + '/') ||
            (url == sr_origin || url.slice(0, sr_origin.length + 1) == sr_origin + '/') ||
            // or any other URL that isn't scheme relative or absolute i.e relative.
            !(/^(\/\/|http:|https:).*/.test(url));
    }   
    function safeMethod(method) {
        return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method));
    }   

    if (!safeMethod(settings.type) && sameOrigin(settings.url)) {
        xhr.setRequestHeader("X-CSRFToken", getCookie('csrftoken'));
    }   
});

这篇关于带有jquery-tinymce图像上传插件的Django的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆