2012-04-09 3 views
7

내가 다음 장고 URL을 GET 변수와 일치하지 않는. 그러나, 나는이 URL의 장고 모든 GET 변수를 추가하려고하면 내가 http://localhost:8000/companies/?c=1 장고에 가면 예를 들어, 404, 제기 제기 이상한 무엇 404, 404에 말하는 것입니다 :장고 URL은

현재의 URL , companies/과 일치하지 않습니다.

URL에 GET 변수를 전달할 수없는 이유는 무엇입니까?

django 1.4를 사용하고 있습니다.

def companies(request): 

가 변수를 GET이기 때문에 그것은 추가 매개 변수를 허용 할 필요가 없습니다, 변수는 인자 올바른을 URL이 아닙니다 :

회사는 다음과 같이 정의되어 있나요? 나는이 일을 수 백 번 해 왔으며 항상 일하는 것을 맹세합니다 ...

+0

아마도'companies' 함수가 매개 변수를 허용하지 않습니까? 서명 해주세요, –

+0

질문에 추가되었습니다. 'def 기업 (요청) : – dgel

답변

7

오케이. 이 아주 이상한 행동을 일으키는 것이 무엇인지 알아 냈습니다. 나는 resolve(request.get_full_path())을 호출하는 커스텀 컨텍스트 프로세서를 가지고있다. URL에 GET 변수가 있으면 404가 원인 인 것 같습니다. 아주 이상한.

+0

'resolve'는'django.core.urlresolvers'에서입니다. – dgel

+2

분명히 [알려진 문제] (https://code.djangoproject.com/ticket/13855)입니다. 'resolve (request.path)'가 작동하고 404를 수정합니다. – dgel

+2

전혀 이상하지 않습니다. 'request.get_full_path()'는 URL 경로 * plus *를 질의 문자열로 반환한다. 그러나'resolve'는 단순한 URL 경로를 기대하므로 * 쿼리 문자열을 포함하여 전달 된 문자열과 일치하는 url 패턴을 찾으려고 시도합니다. 분명히 그러한 urlpattern은 존재하지 않을 것이기 때문에 404를 얻는다. 당신이 결정 했으므로, 쿼리 문자열을 포함하지 않기 때문에'request.path'를 사용해야한다. –