我的主页上进行了以下测试:
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'),
]
答案 0 :(得分:0)
您似乎正在生产SECURE_SSL_REDIRECT = True
,因此Django将您重定向到https。
您可以使用secure=True
response = self.client.get(url, secure=True)
如果您不想以这种方式更改所有测试,请参见this question,以获取不同选项的讨论。