Javascript Django返回JsonResponse并捕获ajax请求中的数据
这是我的看法。 我将返回JsonResponse到ajax请求,其中捕获来自我的视图Javascript Django返回JsonResponse并捕获ajax请求中的数据,javascript,jquery,python,ajax,django,Javascript,Jquery,Python,Ajax,Django,这是我的看法。 我将返回JsonResponse到ajax请求,其中捕获来自我的视图'line\u product\u total':total、和其他上下文的传入数据 def get(self, request, *args, **kwargs): cart = self.get_object() product_id = request.GET.get('product') delete_product = request.GET.get('delete',
'line\u product\u total':total、
和其他上下文的传入数据
def get(self, request, *args, **kwargs):
cart = self.get_object()
product_id = request.GET.get('product')
delete_product = request.GET.get('delete', False)
product_added = False
if product_id:
product_instance = get_object_or_404(Product, id=product_id)
amount = request.GET.get('amount', 1)
try:
if int(amount) < 1:
delete_product = True
return HttpResponse('IntegrityError', delete_product)
except:
raise Http404
cart_product, created = CartProduct.objects.get_or_create(cart=cart, product=product_instance)
if created:
product_added = True
if delete_product:
cart_product.delete()
else:
cart_product.amount = amount
cart_product.save()
if not request.is_ajax():
return HttpResponseRedirect(reverse('e_commerce:cart'))
# return cart_product.cart.get_absolute_url
if request.is_ajax():
try:
total = cart_product.line_product_total
except:
total = None
data = \
{
'deleted': delete_product,
'product_added': product_added,
'line_product_total': total,
}
return JsonResponse(data)
cart = Cart.objects.get(pk=cart.pk)
return render(request, 'sales/cart.html', {'cart': cart})
模板
<form action="." method="GET">
<h4 id="product-line-total-{{ product.id }}">{{ product.line_product_total }}</h4>
<input class="type_number" style="text-align: center;margin-left: -50px;" title="" type="number" name="amount" value="{{ product.amount }}">
<input type="hidden" name="product" value="{{ product.product.id }}">
<button type="submit"></button>
</form>
{{product.line_product_total}
简言之,我无法在我的ajax中捕获可变行\产品\总计
它只是说未解析变量行\产品\总计
但是我发送这个变量。什么问题?
伙计们,至少告诉我问题本身在任何方面都不能做什么
提前感谢:)您的视图代码并不总是返回JsonResponse。您应该跟踪视图执行(在每个
return
语句之前添加一些print
或-better-logging.debug()
),还应该记录您在客户端得到的有效响应,而不是盲目地假设您有一个状态为200的json响应
而且你的代码真的很糟糕,甚至很危险
首先也是最重要的一点,GET请求必须是幂等的(它必须不更改服务器的状态)。对从数据库中创建/更新/删除对象的请求使用GET确实会带来麻烦
那么,异常处理程序不仅仅是无用的,它们是有害的。它们只捕获任何异常(包括
SystemExit
!)并默默地忽略它们,因此您永远不会知道什么时候、什么时候、如何以及为什么会出错。尽量缩短try
块(如果可能的话,只捕获一条语句),只捕获您期望并知道如何处理的异常,log记录您捕获的任何内容(尽可能多的上下文信息),如果您真的不知道如何处理异常,就让它传播。用户将收到500个错误(是的,狗屎会发生),并且(假设您的服务器和项目配置正确),您将收到一封带有完整回溯等功能的错误电子邮件,这样您就知道出了问题,并有机会修复它。这是怎么说的?显示整个错误消息。没有错误消息,但我肯定知道原因。数据不是从我的视图传入的。py如何捕获数据?请帮助我Daniel Rosemani如果这就是问题所在,为什么它在数据上没有错误。product\u添加了或数据。删除了?我不知道,但line\u product\u total jquery说没有这样的变量:(是的,我在Chrome网络选项卡视图中检查了它,返回数据100%良好,但jquery无法显示。好的,谢谢你的建议和回答
<form action="." method="GET">
<h4 id="product-line-total-{{ product.id }}">{{ product.line_product_total }}</h4>
<input class="type_number" style="text-align: center;margin-left: -50px;" title="" type="number" name="amount" value="{{ product.amount }}">
<input type="hidden" name="product" value="{{ product.product.id }}">
<button type="submit"></button>
</form>