programing

django test client는 url에 액세스할 때 301개의 리디렉션을 받습니다.

lastcode 2023. 9. 9. 09:33
반응형

django test client는 url에 액세스할 때 301개의 리디렉션을 받습니다.

저는 장고뷰를 위한 유닛테스트를 작성하고 있습니다.내 보기 중 하나가 예상치 못한 리디렉션 코드 301을 반환하는 것을 관찰했습니다.
여기에 앞서 언급한 저의 views.py 이 있습니다.

def index(request):
    return render(request, 'index.html',
                  {'form': QueryForm()})

def query(request):
    if request.is_ajax():
        form = QueryForm(request.POST)
        return HttpResponse('valid')

아래는 urls.py 입니다.

urlpatterns = patterns('',
         url(r'^$', 'core.views.index'),
         url(r'^query/$', 'core.views.query')
         )

그리고 실패할 유닛 테스트.

def so_test(self):
    response = self.client.post('/')
    self.assertEquals(response.status_code, 200)

    response = self.client.post('/query', {})
    self.assertEquals(response.status_code, 200)

제 질문은 301번 상태가 반환된 이유는 무엇입니까?

일치하는 URL을 정의했습니다./query/, 하지만 당신은 시험하고 있습니다./query. 장고는 사용자의 설정에 있기 때문에 후행 슬래시가 있는 URL로 리디렉션합니다.

테스트를 다음과 같이 변경할 수 있습니다.

response = self.client.post('/query/', {})

저는 실수로 a로 시험을 진행한 것이 문제였습니다.setting.py파일을 가지고 있었습니다. 로 바꾸었습니다.SECURE_SSL_REDIRECT = False문제를 해결했습니다.

다른 옵션은 다음을 사용하는 것입니다.client와 함께secure=True, 즉:

response = self.client.post('/query/', {}, secure=True)

클라이언트가 HTTPS 요청을 에뮬레이트하게 됩니다.

언급URL : https://stackoverflow.com/questions/12784905/django-test-client-gets-301-redirection-when-accessing-url

반응형