Django可以使用我设置的会话,但是在Web浏览器的检查器中看不到它

时间:2012-05-09 04:55:37

标签: django cookies mongoengine

我正在使用DjangoMongoDB作为后端数据库。

settings.py我已经设置了这些代码:

SESSION_ENGINE = 'mongoengine.django.sessions'

'django.contrib.sessions.middleware.SessionMiddleware',

'django.contrib.sessions',

在我的view/user.py中(只是部分代码)

                 if user.password == password:
                    #add session information
                    if request.session.test_cookie_worked():
                        returnmsg = "COOKIE OK"
                    else:
                        returnmsg = "COOKIE ERR"
                    response = HttpResponse(returnmsg)
                    response.set_cookie("username", username)
                    request.session['username'] = username
                    user.log.append(UserLog(time=datetime.now(), ip=request.META['REMOTE_ADDR'], login=True))
                    user.save()
                    return response

当我运行我的网站时,我可以通过此功能登录,其他需要验证我的会话设置的功能可以从username读取response.session

但是returnmsg是COOKIE ERR,当我使用Safari的Web Inspector时,我在这里看不到任何会话或cookie。

Django在哪里存储会话数据?它应该是客户端计算机上的编码cookie吗?如果它没有存储在我客户的计算机上,为什么Django仍然能够得到它? 在我的代码中,我也尝试过直接设置一个cookie,它仍然不起作用。

MongoEngine有什么问题吗?我是以错误的方式使用它吗?

1 个答案:

答案 0 :(得分:1)

您应首先使用set_test_cookie()设置测试Cookie,然后在随后的请求中使用test_cookie_worked()检查它。

该功能不测试cookie是否有效,它会特别检查测试cookie是否成功设置 - 这会导致检查cookie是否有效。

除非您使用set_test_cookie(),否则test_cookie_worked()将始终失败。