2012-12-21 4 views
6

컴퓨터에서 로컬 이미지를 가져 오는 내 django 프로젝트의 jquery-tinymce 폴더에 http://justboil.me/의 jbimages를 설치했습니다.jquery-tinymce 이미지 업로드 플러그인이 포함 된 Django

이미지를 업로드 할 때 "이 시간이 오래 걸립니다. 오류가 발생했습니다."라는 오류가 발생합니다. "CSRF 확인에 실패했습니다. 요청이 중단되었습니다"와 같이 스크립트 출력 오류가 표시됩니다. 하지만 이미 {% csrf_token %}을 dialog.htm 형식으로 제공했습니다. 아래 그림과 같이

enter image description here

스피 이미지를 선택한 후 오류가 :

enter image description here

사람이 어떻게이 문제를 제거하는 데 도움이 수 있습니까?

+0

인가? – Ahsan

답변

0

요청을 통해 이미지를 업로드하려는 경우 CSRF validation in ajax이어야합니다.

그렇지 않으면 THIS 질문이 도움이 될 수 있습니다.

+0

Iam은이 jbimages에 직접 장고 뷰를 사용하지 않습니다. 그 안에 tinymce 편집기 html을 사용하는 Iam. Iam은 "jbimages"플러그인을 사용하여 플러그인 세부 정보를 렌더링합니다. 그때 그것은 보여주고 있습니다. 그 외의 경우, 그것은 효과가 있습니다. – Raji

1

ajax을 사용하여 게시되는 양식처럼 보입니다. 양식을 게시 할 때 ajax를 사용하는 경우 POST 데이터에 csrf_token을 포함해야합니다. 이 경우 당신은 실종 상태입니다.

또는 다음 스크립트를 base.html에 추가하면 각 Ajax 요청에 대한 csrf_token 업데이트가 처리됩니다. 이 아약스 요청

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')); 
    } 
}); 
관련 문제