웹페이지에 액세스할 수 없는 경우 리다이렉트하여 에러를 사용자에게 보여주는 방법을 다룹니다.
Flask의 Quickstart 문서를 보며 진행한 과정을 작성한 글입니다.
https://flask.palletsprojects.com/en/2.0.x/quickstart/
부족한 부분이나 이상한 부분이 있을 수 있습니다.
개발 환경 구축은 다음 포스트를 참고하세요
Windows 10 환경에서 Visual Studio Code와 Miniconda를 사용한 Flask 개발 환경 만들기
https://webnautes.tistory.com/1522
Miniconda를 설치하지 않고 pip install flask 명령으로 해도 상관은 없습니다.
2021. 12. 24 최초작성.
사용자가 접속한 URL을 다른 웹페이지로 변경하려면 redirect() 함수를 사용하고 오류 코드를 보여주면서 사용자의 접속 요청을 조기에 중단하려면 abort() 함수를 사용하면 됩니다.
redirects.py 이름으로 저장합니다.
from flask import Flask, abort, redirect, url_for app = Flask(__name__) def this_is_never_executed(): return "<p>Hello, World!</p>" # http://127.0.0.1:5000/로 접속시 http://127.0.0.1:5000/login로 이동되게 만듭니다. @app.route('/') def index(): return redirect(url_for('login')) # http://127.0.0.1:5000/login 페이지에서 401 에러에 대한 오류 내용을 보여줍니다. @app.route('/login') def login(): abort(401) return this_is_never_executed() |
다음처럼 실행합니다.
set FLASK_APP=redirects
flask run
http://127.0.0.1:5000/로 접속시 http://127.0.0.1:5000/login로 이동되면서 401 에러에 대한 내용을 보여줍니다.
위 예제는 사용자가 웹페이지에 액세스할 수 없다는 것을 구현했지만 사용자에게 작동 방식을 보여주기 때문에 개선이 필요합니다.
웹페이지에 액세스할 수 없는 경우 사용자를 위한 웹페이지를 보여주도록 변경합니다.
errorhandler() 데코레이터를 사용하면 됩니다.
다음처럼 두 개의 파일을 각각 저장합니다.
page_not_found.html
<!doctype html> <h1>페이지를 찾을 수 없습니다.</h1> |
redirects.py
from flask import Flask, redirect, render_template app = Flask(__name__) @app.route('/') def index(): return redirect('/login') @app.errorhandler(404) def page_not_found(error): return render_template('page_not_found.html'), 404 |
다음처럼 실행합니다.
set FLASK_APP=redirects
flask run
http://127.0.0.1:5000/ 에 접속하면 http://127.0.0.1:5000/login로 이동되면서 앞에서 만들어둔 웹페이지의 내용을 보여줍니다. flask에서는 웹페이지의 상태코드가 404(찾을수 없음)이라는 것을 알려줍니다.
'WEB > Flask' 카테고리의 다른 글
Flask 강좌 8 - 세션(Sessions)과 로그인 구현 (0) | 2021.12.26 |
---|---|
Flask 강좌 7 - JSON 응답하기 (0) | 2021.12.25 |
Flask 강좌 5 - request 예제(로그인, 파일 업로드, 쿠키) (0) | 2021.12.22 |
Flask 강좌 4 - 렌더링 템플릿 (0) | 2021.12.20 |
Flask 강좌 3 - Routing (0) | 2021.12.19 |
시간날때마다 틈틈이 이것저것 해보며 블로그에 글을 남깁니다.
블로그의 문서는 종종 최신 버전으로 업데이트됩니다.
여유 시간이 날때 진행하는 거라 언제 진행될지는 알 수 없습니다.
영화,책, 생각등을 올리는 블로그도 운영하고 있습니다.
https://freewriting2024.tistory.com
제가 쓴 책도 한번 검토해보세요 ^^
그렇게 천천히 걸으면서도 그렇게 빨리 앞으로 나갈 수 있다는 건.
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!