我将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)
根据此comment,我尝试在更改session_key之前添加另一个GET响应response = self.client.get('/')
,但它似乎没有帮助。
我做错了什么?
编辑:我使用的是Django 1.9.6,Python 3.4。在Daniel Roseman的回答之后改变了问题标题。
答案 0 :(得分:1)
我不太确定你在这里做了什么。 session['session_key']
与session.session_key
不同;前者只是会议中的另一个价值。
但是没有理由用会话密钥做任何明确的事情。它应该是一个纯粹不透明的值,您的代码永远不会与之交互。如果要将数据与匿名用户的会话相关联,则应该将数据存储在会话中,而不是相反。