在Django中,如何使用angularjs设置特定的请求会话?
我试图实现一个购物车,因此需要使用angularjs设置我的请求会话。例如,如果我有很多产品,一旦用户单击某个产品的“添加到购物车”按钮,我想将该产品添加到会话的购物车对象中。选择会话的主要目的是,我希望在其他请求的视图上可以访问此购物车。有什么可能的解决办法吗在Django中,如何使用angularjs设置特定的请求会话?,angularjs,django,Angularjs,Django,我试图实现一个购物车,因此需要使用angularjs设置我的请求会话。例如,如果我有很多产品,一旦用户单击某个产品的“添加到购物车”按钮,我想将该产品添加到会话的购物车对象中。选择会话的主要目的是,我希望在其他请求的视图上可以访问此购物车。有什么可能的解决办法吗 让我考虑一个名为产品TysList:-< /P>的视图。 def products_list(request): // Somehow set session using Angularjs like below //
让我考虑一个名为产品TysList:-< /P>的视图。
def products_list(request):
// Somehow set session using Angularjs like below
// request.session['cart'] = selected_products_list
products = Product.objects.all()
return render(request, "browse_products.html", {'products': products})
这样我就可以在另一个视图中访问这些选定的产品,如下所示:-
def checkout(request):
selected_products = request.session['cart']
return render(request, "checkout.html", {'selected_products': selected_products})
为了动态更新会话,我按照@Daniel Roseman的建议创建了另一个视图
def update_cart_session(request):
if request.method == 'POST':
cart = json.loads(request.body)
request.session['cart'] = cart["cart"]
print request.session['cart']
return HttpResponse('OK')
else:
return HttpResponse("Not a POST Method")
为了使用AngularJS发送购物车项目,我使用了HTTP post方法:-
var url = "your_url_pointing_to_above_view";
var data= {
"cart": $scope.cart
};
$http.post(url, data).then(successCallback, errorCallback);
function successCallback(response){
console.log(response);
};
function errorCallback(error){
console.log(error);
swal("Oops!", "Check your internet connection!", "error");
};
我不太清楚你在问什么。无论您是否使用angular,设置会话变量的方法都是相同的,使用的代码与您注释掉的代码类似。您可以使用Angular向这样做的视图发送Ajax请求。一个单独的视图来处理会话,然后在那里我可以执行Ajax请求,对吗?我明白您的意思。你能发布一个答案,这样我就可以接受它作为一个解决方案。