Flask URL 만들기(Building)
url_for() 함수는 함수 이름으로 된 종단점(endpoint)의 URL을 생성합니다. 그리고 변수 규칙에 따라서 인자도 전달할 수 있습니다. 그래서 함수명을 첫번째 인자로, 하나 혹은 그 이상의 키워드 인자를 전달하면, 변수 규칙에 맞추어 이에 해당하는 URL을 생성해줍니다.
다음 script는 url_for() 함수를 어떻게 사용하는지 잘 보여줍니다.
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__': app.run(debug = True) |
위의 스크립트의 hello_user(name) 함수는 URL에서 인자의 값을 전달받습니다.
hello_user(name) 함수는 먼저 전달받은 인자가 ‘admin’과 일치하는지 확인합니다. 만약 일치한다면 애플리케이션은 url_for()를 사용하여, hello_admin() 함수로 리다이렉트(redirect)합니다. 일치하지 않는다면, 전달받은 name 인자를 guest 매개변수로 사용하여 hello_guest() 함수로 리다이렉트합니다.
위의 코드를 저장하여 실행합니다. 그리고 웹 브라우저를 열어 다음 URL을 입력합니다.
http://localhost:5000/user/admin
결과는 쉽게 예상할 수 있습니다. 코드는 주어진 URL을 라우팅합니다. 우리가 정해둔 라우팅에 따라 hello_user(name)이 호출될 것입니다. URL의 name을 확인하여 리다이렉트합니다. name은 admin이기 때문에 hello_admin()으로 리타이렉트됩니다. 결국 ‘Hello Admin’이 반환됩니다. 우리는 브라우저에서 Hello Admin을 볼 수 있습니다.
이제 다른 URL을 입력해보겠습니다.
http://localhost:5000/user/mooneegee
결과를 예상해보겠습니다. 전달된 URL은 라우팅되어 hello_user(name)을 호츨할 것입니다. mooneegee는 이 함수의 인자로 전달됩니다. 그 다음 hello_guest() 함수로 리다이텍트되고, 인자로 mooneegee를 전달합니다. 마직막으로 ‘Hello mooneegee as Guest’반환합니다. 우리는 브라우저에서 이 반환된 문자열을 볼 수 있습니다.
다음에 다룰 내용은 무엇인가요?
WWW(월드 와이드 웹)에서 데이터를 주고 받는 바탕인 Http 프로토콜과 이와 관련된 Flask API를 살펴볼 것입니다.
댓글 없음:
댓글 쓰기