Estoy desarrollando un sitio web en DJANGO y tengo un problema:
Tengo un botón en mi sitio web que, cuando se activa, envía una solicitud AJAX POST. Dado que este botón se encuentra en varios lugares de mi sitio web, decidí recibir la solicitud AJAX en el archivo del procesador de contexto de mi servidor.
Así es como se ve la solicitud en la interfaz:
$.ajax({ method: 'POST', headers: {'X-CSRFToken': csrftoken}, data: { "requested_item": requested_item }, dataType: "json", success: function() { // Handle success } });Y así es como se ve el manejo de solicitudes en el backend:
requested_item = request.POST.get('requested_item') if requested_item != None: # Handle valid request return JsonResponse({'success': True}) La cuestión es que el return JsonResponse({'success': True}) no funciona, arroja este error:
File "*path*\virtual-env\lib\site-packages\django\template\context.py", line 244, in bind_template updates.update(processor(self.request)) ValueError: dictionary update sequence element #0 has length 17; 2 is requiredLos datos llegan sin problemas desde el frontend hasta el backend, pero parece que no puedo responder.
Estoy manejando varias solicitudes AJAX de la misma manera en mi backend y respondiendo sin problemas, pero esta es la única que manejo en el procesador de contexto, así que estoy seguro de que hay algo que me estoy perdiendo.
¡Gracias!
Eventualmente, con ayuda, lo descubrí.
El procesador de contexto solo debe usarse para el contexto de la plantilla o la representación de la plantilla en general, por lo tanto, la respuesta debe ser un diccionario, no uno de tipo json (de eso se trata el error).
Creé una vista independiente para esta solicitud de AJAX y especifiqué en la interfaz de AJAX la URL de esta vista y así funcionó.