Flask redirect , uri_for를 알아보자!

Flask redirect , uri_for를 알아보자!

먼저 redirect함수는 서버에서 프론트엔드로 ~~ url로 이동시키는 것이다.

@app.route('/where') def where(): return redirect('http://naver.com')

localhost:5000/where로 접근하였을 때 redirect로 네이버 주소를 적어주었으니 저 url로 이동을 시킨다.

@app.route('/where') def where(): return redirect('/here') @app.route('/here') def here(): return 'hi'

마찬가지로 /where에 접근했을 때 redirect를 사용해 /here로 토스 시키면 웹브라우저에 hi를 출력시킬 것이다.

그런데 만약 여기서 /where로 접근했을 떼 /here이라는 url말고 /there이라고 바꾸고 싶다. 그럼

@app.route('/where') def where(): return redirect('/there') @app.route('/there') def here(): return 'hi'

redirect의 주소는 물론 route의 주소도 바꿔주어야 한다. 코드가 수백줄이라면 코드 찾기도 귀찮고 한두개가 아닐 것이다. 따라서 여기서 redirect(url_for())를 사용해주면 간단해진다. url_for안에는 함수의 이름이 들어온다.

위의 예에서 url

@app.route('/where') def where(): return redirect(uri_for('here')) @app.route('/there') def here(): return 'hi' 혹은 @app.route('/change') def here(): return 'hi'

이렇게 바꾸었다고 가정해보자 here의 함수의 url은 /there이므로 redirect(/there) 로 변환되어 hi를 출력할 것이다.

밑의 예제도 마찬가지로 here이 가리키고 있는 url은 change니까 redirect(/change)로 변환되어 hi를 출력할 것이다.

뿐만아니라 여기서 get파라미터도 함께 보내줄 수도 있다.

@app.route('/myhome') def where(): return 'hi' @app.route('/page') def web_page(): return redirect(url_for('where',home='강남구'))

/page로 이동 -> 함수 where이 가리키고 있는 /myhome으로 이동 근데 파라미터와 함께

/myhome?home=강남구 로 이동하고 웹페이지에는 hi를 출력할 것이다.

반응형

from http://taehyeki.tistory.com/150 by ccl(A) rewrite - 2021-12-28 16:26:58