在javascript中更新Django会话变量?

Posted

技术标签:

【中文标题】在javascript中更新Django会话变量?【英文标题】:Update Django session variable in javascript? 【发布时间】:2011-06-03 12:47:17 【问题描述】:

我想在 javascript 事件(实际上是 jQuery)之后更新 Django 会话变量。

我需要通过 POST 请求执行此操作吗?

或者 Javascript 和 Django 可以以某种巧妙的方式共享会话变量,在这种情况下,我可以直接从 jQuery 更新会话变量吗?我对细节有点模糊。

谢谢!

【问题讨论】:

【参考方案1】:

您可以通过 Ajax 做到这一点。你需要一个简单的 Django 视图来更新会话变量,jQuery 将调用它:

def update_session(request):
    if not request.is_ajax() or not request.method=='POST':
        return HttpResponseNotAllowed(['POST'])

    request.session['mykey'] = 'myvalue'
    return HttpResponse('ok')

和 JS:

$.post('/update_session/', function(data) 
    alert(data);
);

【讨论】:

您的 Django 视图中有一个拼写错误,在分配值后尾随 ]。此外,您应该返回 HttpResponseNotAllowed(['POST',]) 而不是 Http404() 希望你不介意我的修复。还将and not 替换为or not 怎么样,我们能不能让它更通用一点,你可以设置任何p 从请求参数中获取mykey和myvalue安全吗?

以上是关于在javascript中更新Django会话变量?的主要内容,如果未能解决你的问题,请参考以下文章

如何在javascript中更新django变量

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

无模板 Django + AJAX:Django 的 CSRF 令牌是不是在浏览会话过程中更新?

Django:从模板中访问会话变量?

Django 会话变量重置

Django - 如何将 javascript 变量保存到 Django 数据库中? [复制]