私はカートリッジテストを実行中にいくつかの問題に遭遇しました。テストクライアントはself.client.get( '/')のようなことをすると常に301を返します。続行する唯一の方法は、follow = Trueを追加することですが、私は常にそれを実行しなければならないと疑っています。これはまた、test client always uses GET for redirects以降、POSTをテストできないことを意味します。djangoテストクライアントが常に返す301
私はいくつかの場所でカートリッジを変更しました。これは間違いなく私のせいですが、どうやってデバッグするのか分かりません。ここでは何が起こるかです:
>>> response = self.client.get('/en/', follow=True)
>>> response.status_code
200
>>> response.redirect_chain
[('http://example.com/en/', 301)]
>>> response = self.client.get('http://example.com/en/')
>>> response.status_code
301
>>> response['Location']
'http://example.com/en/'
私は与えられたURLに直接アクセスしようとしても:
>>> response = self.client.get('/en/')
>>> response.status_code
301
>>> pp response.__dict__
{'_base_content_is_iter': False,
'_charset': 'utf-8',
'_closable_objects': [],
'_container': [u''],
'_handler_class': None,
'_headers': {'content-language': ('Content-Language', 'en'),
'content-type': ('Content-Type', 'text/html; charset=utf-8'),
'location': ('Location', 'http://example.com/en/'),
'vary': ('Vary', 'Accept-Language, Cookie')},
'client': <django.test.client.Client object at 0x1105364d0>,
'context': None,
'cookies': <SimpleCookie: >,
'request': {u'CONTENT_TYPE': 'text/html; charset=utf-8',
u'PATH_INFO': '/en/',
u'QUERY_STRING': '',
u'REQUEST_METHOD': 'GET'},
'templates': []}
そして、次のリダイレクトと
は>>> response = self.client.get('http://example.com/en/', follow=True)
>>> response.redirect_chain
[('http://example.com/en/', 301)]
'example.com' だけですサイトはURLを生きています。それが起こっているかもしれない理由がありますか? localhostのかわりにexample.comにリダイレクトするのは正常ですか(または少なくとも、それはまだローカルで実行されているようです)?
私はdjangoのビューをテストするときにわざと301のPermanentRedirectを取得し、アイデアがなくなりました。あなたの質問と回答は、SSL設定がリダイレクトを生成していたことに気付きました。 – Andres
私も301のステータスコードを引き起こしたsslミドルウェア設定がありました。あなたの手がかりなしで、おそらく私に多くの時間を要したでしょうか?ありがとう! – Bentley4
私と同じdjango-sslifyを使用しています。 'django.test.utils import override_settings'から' 'TestCase'クラスでデコレータ' @override_settings(SSLIFY_DISABLE = True) 'を使う必要がありました。 Django 1.4+の作業 – dghubble