2012-12-21 11 views
6

Ho installato jbimages da http://justboil.me/ nella cartella jquery-tinymce del mio progetto django per ottenere immagini locali dal computer.Django con plugin per caricamento immagine jquery-tinymce

Quando si carica l'immagine, viene generato l'errore "Questo richiede più tempo del solito. Potrebbe essersi verificato un errore". Mostra l'errore di output dello script come "Verifica CSRF non riuscita. Richiesta interrotta". Ma ho già dato {% csrf_token%} sotto forma di dialog.htm.

enter image description here

Iam ottenere l'errore dopo aver selezionato l'immagine, come illustrato di seguito:

enter image description here

qualcuno mi può aiutare come sbarazzarsi di questo problema?

+0

Si tratta di una richiesta AJAX? – Ahsan

risposta

0

Se si sta tentando di caricare un'immagine tramite la richiesta ajax, è necessario cercare CSRF validation in ajax.

O se non poi THIS la domanda può aiutarti.

+0

Non utilizzo le viste di Django direttamente su questa jbimages. Iam usa editor di tinymce html in questo. Iam usa il plugin "jbimages" e renderà i dettagli del plugin. In quel momento sta mostrando. Oltre a questo, funziona. – Raji

1

sembra che il modulo venga pubblicato utilizzando ajax. Se stai utilizzando ajax per inviare il modulo, assicurati di includere lo csrf_token nei dati POST. che in questo caso ti manca.

In alternativa, aggiungere lo script seguente al numero base.html e si prenderà cura dell'aggiornamento di csrf_token per ciascuna richiesta 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')); 
    } 
});