2012-12-21 10 views
6

मैंने http://justboil.me/ से jbimages को कंप्यूटर से स्थानीय छवियों को प्राप्त करने के लिए अपने django प्रोजेक्ट के jquery-tinymce फ़ोल्डर में स्थापित किया है।jquery-tinymce छवि अपलोड प्लगइन के साथ Django

जब मैं छवि अपलोड करता हूं, तो यह त्रुटि को फेंक रहा है "यह सामान्य से अधिक समय ले रहा है। एक त्रुटि हो सकती है।" यह स्क्रिप्ट आउटपुट त्रुटि दिखा रहा है क्योंकि "सीएसआरएफ सत्यापन विफल रहा। अनुरोध निरस्त कर दिया गया।" लेकिन मैंने पहले से ही {hs csrf_token%} को dialog.htm के रूप में दिया है।

enter image description here

Iam जैसा कि नीचे दिखाया छवि का चयन करने के बाद त्रुटि मिल रही है:

enter image description here

किसी को भी मेरी मदद कर सकते इस समस्या से छुटकारा पाने के लिए?

+0

यह एक ajax अनुरोध है? – Ahsan

उत्तर

0

यदि आप ajax अनुरोध के माध्यम से कोई छवि अपलोड करने का प्रयास कर रहे हैं तो आपको CSRF validation in ajax देखना होगा।

या यदि नहीं तो THIS प्रश्न आपकी मदद कर सकता है।

+0

Iam इस jbimages पर सीधे django विचारों का उपयोग नहीं कर रहा है। मैं उसमें tinymce संपादक एचटीएमएल का उपयोग कर। Iam "jbimages" प्लगइन का उपयोग करके और यह प्लगइन विवरण प्रस्तुत करेगा। उस समय यह दिखा रहा है। इसके अलावा, यह काम करता है। – Raji

1

ऐसा लगता है कि फॉर्म ajax का उपयोग करके पोस्ट किया जा रहा है। यदि आप फॉर्म पोस्ट करने के लिए AJAX का उपयोग कर रहे हैं तो सुनिश्चित करें कि आप POST डेटा में csrf_token शामिल करें। जो इस मामले में आप गायब हैं।

वैकल्पिक रूप से निम्न स्क्रिप्ट को अपने base.html पर जोड़ें और यह प्रत्येक अजाक्स अनुरोध के लिए 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')); 
    } 
}); 
संबंधित मुद्दे