使用AJAX设置时,不会保存Django会话变量

时间:2016-08-26 05:29:13

标签: angularjs ajax django session

我正在为我的项目使用数据库支持的会话。我正在尝试使用AngularJS通过AJAX post请求更新会话变量的值:

class DocumentListView(JsonRequestResponseMixin, View):
    def post(self, request, *args, **kwargs):
        request_data = json.loads(request.body)
        data_to_be_fetched = request.session.get("data_to_be_fetched", None)
        if not data_to_be_fetched:
            data_to_be_fetched = fetch_data(request_data)
            request.session["data_to_be_fetched"] = data_to_be_fetched
            print request.session.get("data_to_be_fetched")  # This will return the updated value

        return HttpResponse(json.dumps(data_to_be_fetched), content_type="application/json")

以下是我的观点的简化帖子方法:

data_to_be_fetched

似乎没有保存会话变量,因为如果我再次调用上述方法,None的值仍然是data_to_be_fetched。奇怪的是,在第二次调用该方法之后,会最终保存会话变量的新值(None在第二次保存后取出时不再是request.session.modified = True 。为什么它表现得那样?它仅在AJAX请求期间设置会话变量时发生。

我在更新会话变量后尝试添加以下内容,但行为仍然相同:

SESSION_SAVE_EVERY_REQUEST = True

我也尝试将以下内容添加到设置中,但它没有帮助:

typedef unsigned char byte;

static byte *memory // pointer to start of allocator memory

1 个答案:

答案 0 :(得分:1)

问题是使用l​​ocalhost:8000而不是127.0.0.1:8000。因此始终使用127.0.0.1:8000。 这个解决了我。