2013-11-03 3 views
0

특정 요청을 다른 임의의 도메인으로 리디렉션 할 수 있어야하는 매우 간단한 플라스크 응용 프로그램 (URL 단축기)을 작성하고 있습니다. 그러나 리디렉션에 문제가 있습니다. 내가 google.com으로 리디렉션이 예상, 아마도 순진Flask의 외부 도메인으로 리디렉션

from app import app, db 
from flask import abort, redirect 

@app.route('/') 
def index(): 
    return "Hello, world" 

@app.route('/favicon.ico') 
def favicon(): 
    abort(404) 

@app.route('/<slug>') 
def redirect(slug): 
    return redirect('http://google.com/') 

을 대신 리디렉션 플라스크에 의해 "촬영"얻을 것, 그리고 그것을 시도 :이 제거 다운 버전은, 예를 들어, 작동하지 않습니다 리다이렉트 핸들러 (예 : redirect(slug="http://google.com/"))를 통해 리다이렉트 된 URL을 다시 라우팅하여 재귀 및 오류를 통해 모든 스택 공간을 사용할 때까지. 왜 이런 일이 일어날 것인지, 어떻게 해결할 것인지 알 수는 없지만 올바른 방향의 포인터를 고맙게 생각합니다. 이것은 재귀 호출로 해석됩니다 당신이 return redirect(...) 전화 기능의 범위에 있도록 뷰 기능의 영약의 기능을 그림자 때문에,

@app.route('/<slug>') 
def redirect(slug): 
    return redirect('http://google.com/') 

당신은 기능 redirect() 이름 :

답변

2

문제는이 기능에 같은 이름. 전달한 URL은 재귀 호출의 slug 인수에 매핑됩니다.

보기 기능의 이름을 redirect()에서 다른 것으로 변경하면 코드가 올바르게 작동합니다.

+0

감사합니다, 그것은 놓칠 수없는 저를 매우 어리 석고 있습니다. :) – Troy

+0

@Miguel도 너를 바보 같은 실수로 고맙다! 이것에 대해 1 시간 만 낭비했습니다. – pregmatch

관련 문제