3

我正在使用twilldjango-test-utils测试一个 django 应用程序,但它没有让我登录。

我认为它没有设置 django 会话 cookie。我去了一个调用 的网页(斜纹)request.session.set_test_cookie(),然后调用返回twill.show_cookies()(应该打印出 cookie),显示没有 cookie。在另一个页面/视图中,request.session.test_cookie_worked()返回False.

奇怪的是,另一个页面调用request.set_cookie(...)手动设置 cookie,并且有效。twill.show_cookies()显示那个 cookie。所以一些cookies正在工作,但会话中间件似乎没有工作......

会发生什么?如何让 django 会话 cookie 设置为斜纹?

其他一些人也有类似的问题,例如在 django-users上,在另一个 twill/django 脚本上评论 cookie

4

1 回答 1

0

正如 FC 所说,如果客户端和服务器是不同的机器,时间不匹配(甚至可能是时区),你最终可能会遇到 cookie 过期问题。

我只是仔细检查了 的代码set_test_cookie(),它看起来很正常地设置了该值。您确定您遇到问题的页面没有返回错误(因此没有设置test_cookie)?有很多可能发生的方式,但在我的脑海中:

  • Twill 可能不会发送Host您的应用所需的标头
  • 斜纹布可能不会发送referer您的应用所需的
  • 斜纹可能不支持压缩/加密/多部分/其他
  • 斜纹可能无法以其他方式完美模拟浏览器
  • 您的其他中间件之一可能需要上述的某种组合

仔细检查您的其他中间件。尝试制作一个仅测试此问题的空白项目。仅启用管理员的空白项目就足够了。如果您可以在最小配置中复制它,我们可以更有助于追踪错误。

于 2011-11-21T09:04:40.510 回答