2016-08-03 2 views
0

Routes 라이브러리를 사용하는 동안 redirect 특정 URL을 원합니다. 설명서에 다음과 같이 입력 할 수 있다고 나와 있습니다.Python에서 URL 인수 매핑 요청 리디렉션

map.redirect("/legacyapp/archives/{url:.*}", "/archives/{url}") 

그리고 실제로 URL로 리디렉션 할 수 있습니다. 그러나 요청에서 URL 인수를 리디렉션으로 매핑/구문 분석 할 수 없습니다. 내 코드는 다음과 같습니다

curl -L 'FQDN/repository/status_for_installed_repository?owner=qqqqqq&changeset_revision=e5f6ced3e91f&name=asdsadsadas' 

GET /api/repositories/check_updates 

에 저를 리디렉션하지만 난 어떻게 값을 얻을 수있는 방법을 찾을 수 없습니다 :

app.mapper.redirect("/repository/status_for_installed_repository{url:.*}", "/api/repositories/check_updates/{url}") 

앱이 전달되는 경우이

owner namechangeset_revision이다.

일반적으로 리디렉션 할 때 인수를 잃지 않으려 고 일반적으로 사용하기를 기대합니다.

도움을 주시면 감사하겠습니다. 감사. 다음과 같이

답변

0

나는 그것을 구현 결국 :

def _map_redirects(app): 
    """ 
    Add redirect to the Routes mapper and forward the received query string. 
    Subsequently when the redirect is triggered in Routes middleware the request 
    will not even reach the webapp. 
    """ 
    def forward_qs(environ, result): 
     qs_dict = urlparse.parse_qs(environ['QUERY_STRING']) 
     for qs in qs_dict: 
      result[ qs ] = qs_dict[ qs ] 
     return True 

    app.mapper.redirect("/repository/status_for_installed_repository", "/api/repositories/check_updates/", _redirect_code="301 Moved Permanently", conditions=dict(function=forward_qs)) 
    return app