[Flask] URL Building

Jacob Yun·2020년 7월 6일
0

Flask

목록 보기
2/3
post-thumbnail

이 글은 특정 함수를 위해서 URL을 동적으로(유연하게) 만드는데 유용한 url_for() 함수를 소개하려한다.

이 함수는 첫 번쨰 인자로 특정 함수의 이름이고, 나머지 키워드 인자들을 받는다. 여기서 키워드 인자는 URL 안에 변수들과 대응한다.

다음 예시를 보자.

from flask import Flask, redirect, url_for
app = Flask(__name__)

@app.route('/admin')
def hello_admin():
   return 'Hello Admin'

@app.route('/guest/<guest>')
def hello_guest(guest):
   return 'Hello %s as Guest' % guest

@app.route('/user/<name>')
def hello_user(name):
   if name =='admin':
      return redirect(url_for('hello_admin'))
   else:
      return redirect(url_for('hello_guest',guest = name))

if __name__ == '__main__':

위에 스크립트에서 hello_user 함수는 name 을 URL에서 변수로 받는다. 그리고 나서 name 이 'admin' 이면 url_for 함수를 사용해 hello_admin 함수를 리다이렉트를 한다. admin 이 아니라면 hello_user 함수는 name 을 게스트 이름으로 간주하고 hello_guest 함수와 guest 는 해당 name 으로써 리다이렉트한다.

위에 코드를 저장하고 실행하면 다음과 같은 결과를 얻을수있다.

URLOutputDescription
http://localhost:5000/user/adminHello Adminname == 'admin' is True, so hello_user return redirect(url_for('hello_admin'))
http://localhost:5000/user/mvlHello mvl as Guestname == 'admin' is False, so hello_user return redirect(url_for('hello_guest', 'mvl'))
http://localhost:5000/user/jacobHello Jacob as Guestname == 'admin' is False, so hello_user return redirect(url_for('hello_guest', 'jacob'))
profile
정보처리 산업기능요원 재직중인 신입 개발자 입니다.

0개의 댓글