0

我正在将数据保存session_key到一个对象以将数据与匿名用户相关联。在单元测试中,我试图使用测试客户端来设置一个固定的键,但是在 POST 请求期间键会发生变化。一个例子:

// tests.py

def test_post(self):
    session_key = "123"
    session = self.client.session
    session['session_key'] = session_key
    session.save()

    response = self.client.post('/post-url/')
    self.assertEquals(response.content, session_key)
    # AssertionError: b'str60i3gjpvru8f7mellsdf2y3xd2jgh' != '123'


// views.py

@require_http_methods(['POST'])
def ajax_post(request):
    return HttpResponse(request.session.session_key)

基于此评论,我尝试response = self.client.get('/')在更改 session_key 之前包含另一个 GET 响应,但这似乎没有帮助。

我究竟做错了什么?

编辑:我正在使用 Django 1.9.6,Python 3.4。丹尼尔罗斯曼回答后更改了问题标题。

4

1 回答 1

1

我不太确定你在这里做什么。session['session_key']不一样session.session_key; 前者只是会话中的另一个值。

但是没有理由对会话密钥做任何明确的事情。它应该是一个纯粹的不透明值,您的代码永远不会与之交互。如果您想将数据与匿名用户的会话相关联,您应该将数据存储在会话中,而不是相反。

于 2017-01-17T09:06:58.583 回答