2012-12-21 44 views
6

Tôi đã cài đặt jbimages từ http://justboil.me/ vào thư mục jquery-tinymce của dự án django của tôi để nhận hình ảnh cục bộ từ máy tính.Django với jquery-tinymce tải lên hình ảnh plugin

Khi tôi tải lên hình ảnh, nó sẽ báo lỗi là "Quá trình này mất nhiều thời gian hơn bình thường. Có thể đã xảy ra lỗi". Nó đang hiển thị lỗi đầu ra tập lệnh vì "xác minh CSRF không thành công. Yêu cầu bị hủy." Nhưng tôi đã cung cấp {% csrf_token%} dưới dạng dialog.htm.

enter image description here

Iam nhận được lỗi sau khi chọn hình ảnh như hình dưới đây:

enter image description here

bất cứ ai có thể giúp tôi làm thế nào để thoát khỏi vấn đề này?

+0

Đây có phải là một yêu cầu ajax? – Ahsan

Trả lời

0

Nếu bạn đang cố tải lên hình ảnh qua yêu cầu ajax thì bạn phải xem CSRF validation in ajax.

HOẶC nếu không thì THIS câu hỏi có thể giúp bạn.

+0

Iam không sử dụng chế độ xem django trực tiếp vào jbimages này. Iam sử dụng html biên tập tinymce trong đó. Iam sử dụng plugin "jbimages" và nó sẽ hiển thị chi tiết plugin. Tại thời điểm đó nó được hiển thị. Khác hơn thế, nó hoạt động. – Raji

1

có vẻ như biểu mẫu đang được đăng bằng cách sử dụng ajax. Nếu bạn đang sử dụng ajax để đăng biểu mẫu, hãy đảm bảo bạn bao gồm csrf_token trong dữ liệu POST. trong trường hợp này bạn đang thiếu.

Hoặc thêm tập lệnh sau vào base.html của bạn và nó sẽ chăm sóc cập nhật csrf_token cho mỗi yêu cầu Ajax.

CSRF_AJAX_PATCH

$(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')); 
    } 
}); 
Các vấn đề liên quan