Estoy tratando de enviar datos de almacenamiento local a través de una solicitud POST utilizando el siguiente método jquery ajax. ¿Cómo debo escribir mi vista para poder analizar mi objeto JSON y obtener "product_id" para ejecutar el siguiente comando en mi vista de Django? Por favor, vea una copia de mi vista a continuación.
Intentando desde una semana, pero no pude solucionar el problema
¿Hay alguna forma mejor de lograr esto?
Mi Ajax:
$(document).ready(function() { var compare = localStorage.getItem("comparisionItems"); var compareObj = JSON.parse(compare); var data_url = window.location.href; console.log(compare) console.log(compareObj) $.ajax({ url: data_url, type: "POST", data: {'compare_id': compareObj }, headers: { "X-CSRFToken": $.cookie("csrftoken") }, success: function (result) { console.log("Success") }, }); });y Mis vistas:
def compare(request): is_ajax = request.headers.get('X-Requested-With') == 'XMLHttpRequest' if is_ajax and request.method == "POST": compare_id= request.POST.getlist('compare_id[itemIds]') product = get_object_or_404(Products, id=compare_id) context={ 'product':product} return render (request, './compare.html', context)En realidad, mi almacenamiento local tiene el siguiente formato:
("comparisionItems"({ imágenes: productos, itemIds: itemIds }));
¿Pueden ayudarme, por favor, cómo puedo pasar los identificadores de elementos a las vistas y devolver el elemento de las vistas para los identificadores de elementos?
Registro de consola para console.log(compareObj) https://imgur.com/MxdZrgy
dado que .is_ajax() está en desuso, no puede usarlo, pero puede verificar si la solicitud es un XMLHttpRequest como a continuación.
from django.shortcuts import get_object_or_404 def compare(request): is_ajax = request.headers.get('X-Requested-With') == 'XMLHttpRequest' if is_ajax and request.method == "POST": compare_id = request.POST.get('compare_id') product = get_object_or_404(Products, product_id=id) context={ 'product':product,} return render (request, './ecommerce/compare.html', context)Nota; get_object_or_404 es solo un atajo para:
try: product = Products.objects.get(product_id=id) except: raise Http404