Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Django中,如何使用angularjs设置特定的请求会话?_Angularjs_Django - Fatal编程技术网

在Django中,如何使用angularjs设置特定的请求会话?

在Django中,如何使用angularjs设置特定的请求会话?,angularjs,django,Angularjs,Django,我试图实现一个购物车,因此需要使用angularjs设置我的请求会话。例如,如果我有很多产品,一旦用户单击某个产品的“添加到购物车”按钮,我想将该产品添加到会话的购物车对象中。选择会话的主要目的是,我希望在其他请求的视图上可以访问此购物车。有什么可能的解决办法吗 让我考虑一个名为产品TysList:-< /P>的视图。 def products_list(request): // Somehow set session using Angularjs like below //

我试图实现一个购物车,因此需要使用angularjs设置我的请求会话。例如,如果我有很多产品,一旦用户单击某个产品的“添加到购物车”按钮,我想将该产品添加到会话的购物车对象中。选择会话的主要目的是,我希望在其他请求的视图上可以访问此购物车。有什么可能的解决办法吗

让我考虑一个名为产品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请求,对吗?我明白您的意思。你能发布一个答案,这样我就可以接受它作为一个解决方案。