초보 개발자

Flask redirect , uri_for를 알아보자! 본문

Python/이것 저것

Flask redirect , uri_for를 알아보자!

taehyeki 2021. 12. 28. 16:01

먼저 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를 출력할 것이다.