2015-01-28 2 views
2

Django에서 cgiMETA 변수가 모두있는 HttpRequest 개체를 만드는 방법이 있습니까? 보기를 처리하려고하지만 요청 객체를 (쉽게) 작성하는 방법을 알 수 없습니다. 난 단지 내가 기존의 요청에서 모든 필드를 수동으로 복사하는 것보다 더 힘들게하지 않도록하고 싶다. 이 과 같은 기존 솔루션이 있지만 몇 시간 동안 검색 한 후에 필요한 항목을 찾을 수 없다고 느낍니다.META 필드가 채워진 Django HttpRequest 객체를 어떻게 만듭니 까?

나는 원래 django.test에서 ClientRequestFactory 갔다하지만, 이러한 내보기에서 동적 필드의 일부가 잘못된 값으로 렌더링됩니다 정크 데이터를 요청 객체 (예를 들어, SERVER_NAME 같은 것들)

을 채우기

사용 가능한 HttpRequest 객체를 만드는 올바른 방법이 있습니까?

+0

정확히 무엇을하려합니까? 보기를 "처리"한다는 것은 무엇을 의미합니까? 이게 당신의 테스트 야? –

답변

2

첫째, 단지 귀하의 질문에 몇 가지를 명확히 할 :

내가보기 "보기를 처리"하여

를 처리하려고 해요, 난 당신이 의미 생각 HttpRequest 객체를 뷰의 함수에 전달하려고합니다. 이는 보통 URL dispatcher을 통해 이루어집니다.

기존 요청의 모든 필드를 수동으로 복사하는 것보다 더 열심히하고 싶지는 않습니다.

기존 요청을 기반으로 새 HttpRequest 객체를 만들고 싶습니다. 특히 헤더를 사용하지 않아도됩니다. 기존 요청 필드의 일부 필드를 다시 사용하려면 django.http.HttpRequest 설명서를 살펴 봐야합니다. 예를 들어 request.META은 요청 개체간에 다시 사용할 수있는 사전입니다.


django.http.HttpRequest 객체를 직접 사용하는 것이 가장 좋습니다. 당신이 좋아하지만

from django.http import HttpRequest 
request = HttpRequest() 

는 그런 다음 필드를 설정할 수 있으며, request.META 당신이 좋아하지만 설정할 수있는 단지 빈 사전입니다 다음과 같이 당신은 그것을 만들 수 있습니다. 예 :

request.method = 'GET' 
request.META = myOldRequest.META 
request.META['SERVER_NAME'] = 'localhost' 

나머지는 사용자가 살펴볼 수 있습니다. 잘하면 그게 도움이!

관련 문제