在Django中如何使用angularjs设置某个请求会话?

时间:2018-06-11 04:52:05

标签: angularjs django

我正在尝试实现购物车,因此需要使用angularjs设置我的请求会话。例如,如果我有许多产品,并且一旦用户点击某个产品的“添加到购物车”按钮,我想在会话的购物车对象中添加该产品。选择会话的主要目的是我希望在其他请求的视图中访问此购物车。有没有可能的解决方案?

让我们考虑一下名为products_list的视图: -

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})

1 个答案:

答案 0 :(得分:0)

为了动态更新会话,我按照@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");          
};