Django - ajax 请求中的空会话数据

Posted

技术标签:

【中文标题】Django - ajax 请求中的空会话数据【英文标题】:Django - Empty session data in ajax requests 【发布时间】:2011-02-12 11:15:27 【问题描述】:

我有一个 ajax 视图,我想在其中设置一个会话变量,如下所示:

def upload(request, *args, **kwargs):  
    request.session['test'] = 'test'  
    request.session.modified = True  
    print request.session.items()  

我有另一个像这样的正常视图:

def advertise(request):  
    print request.session.items()  

我将这两个字典打印到 shell:

[('test', 'test')]  
[('_auth_user_backend', 'django.contrib.auth.backends.ModelBackend'), ('_auth_user_id', 26L)]

为什么我在 ajax 视图中设置的会话数据没有传递到我的常规视图?如果我在常规视图中设置会话数据,一切正常,但似乎 ajax 请求包含空会话数据?以前有人处理过这样的事情吗?非常感谢任何建议。谢谢。

【问题讨论】:

只是一点建议。尝试使用 Django 调试工具栏并查看是否可以找到任何关于问题所在的提示。你可以在这里下载:github.com/robhudson/django-debug-toolbar。希望对您有所帮助。 您是否向服务器发送相同的会话 ID(通过 cookie)? 【参考方案1】:

我今天也遇到了同样的问题。虽然我不认为 OP 在 3 个月后仍在等待答案:-),但这可能对其他人有所帮助。

我正在发送这样的 Ajax 请求...

$.ajax(url: '@987654321@', 
        async: false, dataType: 'text', 
        success: function(text)  
            time = new Date(text); 
        , error: function(http, message, exc)  
            time = new Date(); 
    ); 

...并像这样在 Firefox 中访问应用程序:

@987654322@

问题是在这种情况下 localhost 和 127.0.0.1 不一样!

【讨论】:

谢谢!我遇到了同样的问题,这让我有点发疯。 :) 哇,不敢相信我在 localhost 和 127.0.0.1 之间的区别上浪费了几个小时......它们应该是一样的 >_ ***.com/questions/37711565/…

以上是关于Django - ajax 请求中的空会话数据的主要内容,如果未能解决你的问题,请参考以下文章

jQuery JSON ajax 请求上的空请求正文

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

对 Django ajax 请求中的 JSON 数据和普通数据感到困惑

Keycloak H2 数据库中的空会话表

Django中的Ajax详解

如何处理 AJAX 请求中的会话超时