반응형

웹페이지에 액세스할 수 없는 경우 리다이렉트하여 에러를 사용자에게 보여주는 방법을 다룹니다.

 

 

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(찾을수 없음)이라는 것을 알려줍니다. 

 




반응형

진행해본 결과물을 기록 및 공유하는 공간입니다.
잘못된 부분이나 개선점을 알려주시면 반영하겠습니다.


소스코드 복사시 하단에 있는 앵커 광고의 왼쪽 위를 클릭하여 닫은 후 해야 합니다.


문제가 생기면 포스트와 바뀐 환경이 있나 먼저 확인해보세요.
질문을 남겨주면 가능한 빨리 답변드립니다.


제가 쓴 책도 한번 검토해보세요 ^^

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기

댓글을 달아 주세요

TistoryWhaleSkin3.4">