on
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