gpt4 book ai didi

jquery - 如何在不重新加载页面(AJAX)的情况下更新 django 模板变量?

转载 作者:行者123 更新时间:2023-11-28 22:30:52 24 4
gpt4 key购买 nike

这个上下文处理器

def cart_proc(request):
return (dict(cart=Cart(request)))

在我的模板中给我变量 {{cart}},所以我可以在 base.html 中使用 {{ car​​t.count }}。count 是计算购物车中产品数量的方法。
这是我的js

function addProduct(){
$('form.add-product').on('submit', function(){
var link = $(this)
var quantity = $(this).find('#id_quantity').val()
$.ajax({
'url': link.attr('action'),
'type': 'POST',
'dataType': 'json',
'data': {
'quantity': quantity,
'csrfmiddlewaretoken': $('input[name="csrfmiddlewaretoken"]').val()
},
'success': function(data, status, xhr){
alert('Success');
return false;
},
'error': function(xhr, status, error){
alert('Error on server. Please try again later.');
return false;
}
});
return false;
});
}

还有我的观点(我使用 django-cart 作为我的购物车)

def add_to_cart(request, id):
form = QuantityForm(request.POST)
if form.is_valid():
product = Product.objects.get(id=id)
quantity = request.POST['quantity']
cart = Cart(request)
cart.add(product, product.price, quantity)
return JsonResponse({'status': 'success'})

我想在使用 AJAX 将产品添加到购物车时更新 {{cart.count}},而无需重新加载页面。现在它仅在重新加载后更新。

最佳答案

我认为您对 Django 应用程序如何与客户端通信存在一些误解。您必须了解请求响应生命周期。

您的模板上下文只存在于请求响应生命周期内。来自您的客户的每个请求都将启动一个具有新模板上下文的新工作人员来生成响应。您的客户端应用程序和 Django 之间没有持续的有状态连接

这意味着如果您想在不重新加载(再次请求)的情况下更新您的客户端页面,您必须将新卡数与您的 JsonResponse 一起传递给客户端,并让 javascript 代码处理响应更新显示的值。

关于jquery - 如何在不重新加载页面(AJAX)的情况下更新 django 模板变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41910247/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com