Django SECURE_SSL_REDIRECT和301 HTTP响应

时间:2016-11-07 18:31:48

标签: django django-rest-framework travis-ci

在与本地不同的环境中,我为我的Django项目设置了DJ_SSL_REDIRECT = True

但是现在,与REST API端点相关的所有单元测试在其他环境中运行时都会失败(例如,在Travis CI中)。

由于301设置,所有HTTP响应都是2XX(我在测试中期待4XXDJ_SSL_REDIRECT)在文档中解释:

  

如果将SECURE_SSL_REDIRECT设置为True,SecurityMiddleware将永久(HTTP 301)将所有HTTP连接重定向到HTTPS。

如何以简单的方式解决这个问题,让我的单元测试保持相关性?感谢。

注意:我使用的是Django Rest Framework 3.5

2 个答案:

答案 0 :(得分:5)

我遇到了类似的问题并使用“安全”属性解决了测试客户端post ang get函数,例如

    response = self.client.post('/accounts/signup/', self.getvalues(), follow=True, secure=True)

希望这有帮助!

米克

答案 1 :(得分:0)

您可以根据代码是否由manage.py test调用来设置SECURE_SSL_REDIRECT。把它放在settings.py中:

# Are we testing? i.e. was this code run via "manage.py test"
TESTING = len(sys.argv) > 1 and sys.argv[1] == 'test'
SECURE_SSL_REDIRECT = False if TESTING else True