我正在为我的项目使用数据库支持的会话。我正在尝试使用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
答案 0 :(得分:1)
问题是使用localhost:8000而不是127.0.0.1:8000。因此始终使用127.0.0.1:8000。 这个解决了我。