Получение 301 вместо 200 в моей производственной среде из-за перенаправления с '/' на 'https://testserver/' - PullRequest
0 голосов
/ 04 ноября 2018

У меня на домашней странице есть следующий тест:

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

На моем dev-сервере все работает нормально, и тест успешно пройден.

На моем рабочем сервере появляется ошибка. response.status_code - 301.

url из reverse('home') - это /.

response['location'] - это https://testserver/.

И, похоже, Django перенаправляет с / на https://testserver/.

Но почему? И почему это происходит только на моем производственном сервере? Как я могу исправить эту ошибку?


Редактировать: вот мои urls.py файлы, запрошенные комментаторами:

main urls.py

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

shop.urls.py

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

1 Ответ

0 голосов
/ 04 ноября 2018

Похоже, у вас есть SECURE_SSL_REDIRECT = True в работе, поэтому Django перенаправляет вас на https.

Вы можете предотвратить перенаправление с помощью secure=True

response = self.client.get(url, secure=True)

Если вы не хотите изменять все свои тесты таким образом, см. этот вопрос для обсуждения различных вариантов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...