由于从'/'到'https:// testserver /'

时间:2018-11-04 17:14:20

标签: django http-status-code-301 django-testing django-tests

我的主页上进行了以下测试:

def test_homepage_is_available(self):
    url = reverse('home')
    response = self.client.get(url)
    self.assertEqual(response.status_code, 200)

在我的开发服务器上,它可以正常工作,并且测试通过。

在生产服务器上,出现错误。 response.status_code是301。

url中的reverse('home')/

response['location']https://testserver/

因此,看起来Django正在从/重定向到https://testserver/

但是为什么呢?为什么只在我的生产服务器上这样做?如何解决此错误?


编辑:这是我的urls.py文件,符合评论者的要求:

主要urls.py

urlpatterns = [
    ...
    url(r'^', include('shop.urls')),
]

shop.urls.py

urlpatterns = [
    ...
    url(r'^$', views.Home.as_view(), name='shop__home'),
]

1 个答案:

答案 0 :(得分:0)

您似乎正在生产SECURE_SSL_REDIRECT = True,因此Django将您重定向到https。

您可以使用secure=True

阻止重定向
response = self.client.get(url, secure=True)

如果您不想以这种方式更改所有测试,请参见this question,以获取不同选项的讨论。