URL 생성
라우팅이 설정된 함수에 대한 URL을 사용하기 위하여 url_for() 메서드를 사용할 수 있다. 이 함수는 인자로 함수의 이름과 URL 변수 이름을 인자로 받는다. 알 수 없는 인자는 쿼리 인자로 URL에 덧붙여진다.예시는 아래와 같다
from flask import Flask, url_for
app = Flask(__name__)
@app.route('/')
def index(): pass
@app.route('/login')
def login(): pass
@app.route('/user/<username>')
def profile(username): pass
with app.test_request_context():
print (url_for('index')) # index 함수과 연관된 URL 출력
print (url_for('login')) # login 함수와 연관된 URL 출력
print (url_for('login', next='/'))
# login 함수와 연관된 URL을 출력하되 next라는 변수에는 '/' 값을 대입할 것
# 값이 없으므로 쿼리 인자로 URL에 덧붙여 출력된다
print (url_for('profile', username='John Doe'))
# profile 함수와 연관된 URL을 출력하되 username라는 변수에는 'John Doe'를 대입할 것
결과는 다음과 같이 출력된다
다른 예시는 다음과 같다
from flask import Flask, redirect, url_for
app = Flask(__name__)
@app.route('/admin')
def hello_admin():
return 'Hello Admin'
# 주소가 /admin일 경우 'Hello Admin'을 반환한다
@app.route('/guest/<guest>')
def hello_guest(guest):
return 'Hello %s as Guest' % guest
# 주소가 /guest/<guest>일 경우 'Hello %s as Guest' % guest을 반환한다
@app.route('/user/<name>') # 주소가 '/user/<name>'일 경우
def hello_user(name):
if name =='admin':
return redirect(url_for('hello_admin'))
# 변수 name의 값이 'admin'일 경우, 함수 hello_admin()의 url을 리다이렉트한다
else:
return redirect(url_for('hello_guest', guest = name))
# 변수 name의 값이 'admin'이 아닐 경우, 함수 hello_quest(name)의 url을 리다이렉트 한다
if __name__ == '__main__':
app.run(debug = True)
주소가 /admin일 경우
주소가 /guest/<guest>일 경우
주소가 '/user/<name>'일 경우
'기초공부 > WEB' 카테고리의 다른 글
[Flask]빠르게 보여주기 - 정적 파일 (0) | 2019.05.20 |
---|---|
[Flask]빠르게 시작하기 - HTTP 메소드 (0) | 2019.05.20 |
[Flask]빠르게 시작하기 - 라우팅 (0) | 2019.05.20 |
[Flask]빠르게 시작하기 - 디버그 모드 (0) | 2019.05.20 |
[Flask]빠르게 시작하기 - 기본 애플리케이션 (0) | 2019.05.20 |