gpt4 book ai didi

angularjs - 使用 AJAX 设置时未保存 Django session 变量

转载 作者:行者123 更新时间:2023-12-03 20:22:43 26 4
gpt4 key购买 nike

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

app.factory('SomeFactory', ['$http', 'djangoUrl',
function ($http, djangoUrl) {
return {
getSomeDataAndUpdateSessionVar: function () {
return $http({
method: 'POST',
url: djangoUrl.reverse('some_app:list'),
data: {
param1: "param1"
}
})
},
}
}
]);

这是我的 View 的简化 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")

似乎 session 变量没有被保存,因为如果我再次调用上述方法, data_to_be_fetched 的值仍将是 None .奇怪的是,在第二次调用该方法后, session 变量的新值最终会被保存(第二次保存后获取时 data_to_be_fetched将不再是 None)。为什么会这样?它仅在 AJAX 请求期间设置 session 变量时发生。

我尝试在更新 session 变量后添加以下内容,但行为仍然相同:
request.session.modified = True

我还尝试将以下内容添加到设置中,但也无济于事:
SESSION_SAVE_EVERY_REQUEST = True

最佳答案

问题是使用 localhost:8000 而不是 127.0.0.1:8000。因此始终使用 127.0.0.1:8000。
这对我来说是修复。

关于angularjs - 使用 AJAX 设置时未保存 Django session 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39158852/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com