Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- PYTHON
- database
- 링크
- rdbms
- 이클립스
- Git
- 파이썬
- sql
- Oracle
- mybatis
- 자바
- 플라스크
- 에러
- spring
- 오라클
- java
- eclipse
- mysql
- 웹프로그래밍
- 자바스크립트
- BOJ
- 백준
- TIL
- 알고리즘
- 데이터베이스
- flask
- 스프링
- javascript
- jQuery
- db
Archives
- Today
- Total
기록과 정리의 공간
[Flask] 리다이렉트(Redirect) 본문
1. flask.redirect()
- (공식 문서 링크)
- 호출 될 경우, 클라이언트를 대상 위치로 리디렉션하는 응답 오브젝트 (WSGI 애플리케이션)를 리턴한다.
- 첫 번째 인자로 location을 받는다. 이는 응답이 redirect해야하는 위치를 의미한다.
2. flask.url_for()
- (공식 문서 링크1), (공식 문서 링크2)
- 라우팅이 설정된 함수에 대한 URL을 얻어내기 위해 사용할 수 있다.
- 첫 번째 인자로 함수의 이름을 받고, 두 번째 부터는 URL 룰의 변수 부분에 대한 다수의 키워드를 인자로 받는다.
- 참고로 url_for()는 html파일에서 jinja문법을 통해 사용될 수 있다. ex>
<a href="{{url_for('board_view')}}">내용</a>
- 예를들어 '/view'이런식으로 직접 url을 쓰지 않고, url_for()를 사용하는 이유는, url을 변경해야할 때 '/view'로 작성된 모든 부분을 변경해주지 않아도 url_for()가 인자로 받은 함수에 대한 url을 알아서 찾아주기 때문이다. 즉, 직접 일일이 변경해주지 않아도 되기 때문이다.
3. 예제들
예제1
- 서버를 실행시키고, http://127.0.0.1:5000/로 접속하면, 아래 이미지와 같이 /login으로 리다이렉트되는 것을 확인 할 수 있다.
# 예제1
from flask import Flask, abort, redirect, url_for
app = Flask(__name__)
@app.route('/')
def index():
return redirect(url_for('login'))
@app.route('/login')
def login():
abort(401)
if __name__ == "__main__" :
app.run()
예제2 - 쿼리 스트링이 존재하는 url
- request.args.get('변수이름')을 사용하여 /user?변수=값&변수=값&...에서 원하는 변수의 값을 얻을 수 있다.
- 참고> request.args.get('idx', 1, type=int) 와 같이 idx값이 존재하지 않을 경우, 두 번째 인자에 default값을 지정할 수 있고 그 값의 type또한 지정해줄 수 있다.
- 서버를 실행시켜 http://127.0.0.1:5000/로 접속하면, 아래와 같이 http://127.0.0.1:5000/user?username=hong으로 리다이렉트 됨.
# 예제2
from flask import Flask, url_for, redirect, url_for, request
@app.route('/')
def index():
return redirect(url_for('profile', username="hong"))
@app.route('/user')
def profile():
username = request.args.get('username')
return username
if __name__ == "__main__":
app.run(debug=True)
- 예제3 : 클린 url (클린 url이란?)
- 예제2와 코드 및 결과 화면 이미지의 url부분을 비교해보자.
- http://127.0.0.1:5000/로 접속하면, 아래와 같이 http://127.0.0.1:5000/user/hong으로 리다이렉트 됨.
# 예제3
from flask import Flask, url_for, redirect, url_for, request
app = Flask(__name__)
@app.route('/')
def index():
return redirect(url_for('profile', username="hong"))
@app.route('/user/<username>')
def profile(username):
return username
if __name__ == "__main__":
app.run(debug=True)
- 참고로 위 코드에서
의 데이터 타입 또한 아래와 같은 형식으로 지정해줄 수 있다. 데이터 타입을 명시하지 않는다면, string으로 지정됨.
<int:username>
'라이브러리&프레임워크 > Flask' 카테고리의 다른 글
[Flask] Flask로 REST API 구현하기 / CORS란? (0) | 2020.09.06 |
---|---|
[Flask] 메시지 플래싱(Message Flashing) (0) | 2020.08.07 |
[Flask] Flask 시작 하기 (0) | 2020.07.29 |
Comments