Prohibido (falta el token CSRF o incorrecto) error de Django

Soy muy nuevo en Django. El nombre de mi proyecto es rango y he creado una URL llamada ‘/ rango / tagger’ que se supone que envía un objeto.

En mi java-script, he intentado comunicarme con esta ruta enviando una solicitud ajax de la siguiente manera:

function send() { obj = {content:$("#content").val()}; $.post('/rango/tagger',obj,function(data){ console.log(data); }) } 

He incluido el {% csrf_token%} en mi plantilla. Sin embargo, me da el error de la siguiente manera:

 Forbidden (CSRF token missing or incorrect.): /rango/tagger [31/Jan/2016 09:43:29] "POST /rango/tagger HTTP/1.1" 403 2274 

Mi etiquetador de funciones en views.py es el siguiente:

 def tagger(request): return render(request,'rango/index.html',RequestContext(request)) 

Y también lo he definido en mi patrón de URL. Sospecho que mi etiquetador de función devuelve un valor o datos incorrectos (realizó el cambio de HttpResponse (solicitud) a la línea anterior en base a otras soluciones SO).

Sin embargo, no parece funcionar para mí. Donde me equivoco

La solicitud AJAX debe incluir el csrf, porque es otra solicitud HTTP, por lo tanto, copie este código:

 // using jQuery 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; } var csrftoken = getCookie('csrftoken'); function csrfSafeMethod(method) { // these HTTP methods do not require CSRF protection return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method)); } $.ajaxSetup({ beforeSend: function(xhr, settings) { if (!csrfSafeMethod(settings.type) && !this.crossDomain) { xhr.setRequestHeader("X-CSRFToken", csrftoken); } } }); 

Después de configurar eso, antes de enviar la solicitud AJAX para configurar el csrf.

fuente

O puede hacerlo de manera breve (sin los códigos escritos arriba), pero enviando todos los datos en el campo de entradas:

 $.post( '/rango/tagger', $("#id_of_your_form").serialize(), function(data) { console.log(data); } )