Tengo la siguiente llamada AJAX para actualizar un campo particular de un modeloAjax llamada fracasar en Django
$("#updateLink").click(function(){
var dec_text = $('#desc_text').val();
$.ajax({
type: "POST",
url:"https://stackoverflow.com/users/update_desc/",
data: {
'val': dec_text,
},
success: function(){
$(".display, .edit").toggle();
$("#descText").html(dec_text);
},
error: function(){
alert("Error");
},
});
return false;
});
y mi opinión es esta
@csrf_exempt
def update_desc(request):
if request.is_ajax():
if request.method == 'POST':
desc_text = request.POST.get('val', False)
if desc_text:
profile = user.profile
profile.desc = desc_text
profile.save()
return_message = "Sent mail"
return HttpResponse(return_message,mimetype='application/javascript')
constantemente estoy recibiendo un mensaje de error y yo no sé cómo resolver esto. Incluso usé el decorador csrf_exempt
para solucionar el problema si el problema fue causado por la falta de csrf token
, pero el problema persiste.
Excepto uno ajax post
que en mi plantilla base
todas las llamadas ajax están fallando. ¿Alguien puede ayudarme a entender lo que está sucediendo aquí? Puedo dar algunos detalles más si es necesario.
Editar:
He añadido un archivo de la js
que contiene este https://docs.djangoproject.com/en/dev/ref/contrib/csrf/#ajax en mi plantilla base, lo que significa que está presente en todas mis plantillas. Y estoy usando la versión de django 1.3.
Espero que sigas recibiendo el csrf_token faltando el error. Si es así, mi respuesta se publica a continuación, indique el error después de que se lo utilice csrf_exempt. –
En realidad, no sé cómo obtener el error, ya que puedes ver que acabo de poner una alerta en mi devolución de llamada de 'error' que me dice que mi llamada ajax falló pero no me dice cuál fue el error. ¿Cómo puedo obtener el error? – Sachin
En primer lugar, en su archivo settings.py DEBUG = True. Esto no mostraría sus errores ajax pero definitivamente otros que no son atendidos. –