flask 다양한 기능
이해하기 쉽고, 장황하지 않은 자료를 기반으로 강의를 진행합니다.
잔재미코딩 소식 공유
좀더 제약없이, IT 컨텐츠를 공유하고자, 자체 온라인 강의 사이트와 유투브 채널을
오픈하였습니다
응원해주시면, 곧 좋은 컨텐츠를 만들어서 공유하겠습니다
응원해주시면, 곧 좋은 컨텐츠를 만들어서 공유하겠습니다
● 잔재미코딩 유투브 오픈
[구독해보기]
4. flask 다양한 기능¶
에러(error)와 로깅(logging)¶
- errorhandler를 사용하여 HTTP 오류 코드가 나오는 페이지를 정의할 수 있음
- return 의 두번째 인자로 에러코드를 넘겨주지 않으면 200 성공으로 인지함
In [ ]:
@app.errorhandler(404)
def page_not_found(error):
return "<h1>404 Error</h1>", 404
In [ ]:
from flask import Flask
import requests
app = Flask(__name__)
@app.errorhandler(404)
def page_not_found(error):
return "<h1>404 Error</h1>", 404
@app.route("/google")
def get_google():
response = requests.get("http://www.google.co.kr")
return response.text
if __name__ == "__main__":
app.run(host="0.0.0.0", port="8080")
로깅 정보는 로그의 레벨에 따라서 출력을 제한 할 수 있습니다.¶
DEBUG > INFO > WARNING > ERROR > Critical
본 자료와 같이 IT 기술을 잘 정리하여, 온라인 강의로 제공하고 있습니다
체계적으로 전문가 레벨까지 익힐 수 있도록 온라인 강의 로드맵을 제공합니다
In [4]:
import logging
# 파일로 남기기 위해 filename='test.log' parameter로 추가한다.
logging.basicConfig(filename='test.log', level=logging.DEBUG)
logging.debug("debug")
logging.info("info")
logging.warning("warning")
logging.error("error")
logging.critical("critical")
In [5]:
from flask import Flask
import requests
app = Flask(__name__)
@app.errorhandler(404)
def page_not_found(error):
app.logger.error(error)
return "<h1>404 Error</h1>", 404
@app.route("/google")
def get_google():
response = requests.get("http://www.google.co.kr")
return response.text
if __name__ == "__main__":
app.run(host="0.0.0.0", port="8080")
anotation¶
before_first_request : 웹 application 기동 이후 가장 처음에 들어오는 HTTP 요청에서만 실행
before_request : HTTP 요청이 들어올때마다 실행
- before_first_request, before_request는 인자를 전달할 수는 없음
- before_first_request, before_request는 인자를 전달할 수는 없음
after_request : HTTP 요청이 끝나고 브라우저에 응답하기 전에 실행
teardown_request : HTTP 요청 결과가 브라우저에 응답한 다음 실행
teardown_appcontext : HTTP 요청이 완전히 완료되면 실행
프로그램 설정¶
본 자료와 같이 IT 기술을 잘 정리하여, 온라인 강의로 제공하고 있습니다
가장 빠르게 풀스택 개발자가 될 수 있도록, 최적화된 로드맵을 제공합니다
- 프로그램들은 일종의 설정 및 구성을 필요
- Flask 객체의 config 속성을 통해 설정 값 변경 및 설정 가능
- config 은 실제로는 dictionary 의 서브클래스이며, 다른 dictionary 처럼 다음과 같이 수정 가능
In [ ]:
app = Flask(__name__)
app.config['DEBUG'] = True
다양한 프로그램 설정 방법¶
In [ ]:
app = Flask(__name__)
app.config.from_object('yourapplication.default_settings')
app.config.from_envvar('YOURAPPLICATION_SETTINGS')
- The application can be configured based on configuration file, which is specified by a environment variable
본 자료와 같이 IT 기술을 잘 정리하여, 온라인 강의로 제공하고 있습니다
체계적으로 전문가 레벨까지 익힐 수 있도록 온라인 강의 로드맵을 제공합니다
In [ ]:
app.config.from_envvar('YOURAPPLICATION_SETTINGS')
- use classes for your Flask application configuration:
In [ ]:
app.config.from_object('module_name.DevelopmentConfig')
In [ ]:
class DevelopmentConfig(BaseConfig):
DEBUG = True
TESTING = True
bootstrap with flask¶
본 자료와 같이 IT 기술을 잘 정리하여, 온라인 강의로 제공하고 있습니다
가장 빠르게 풀스택 개발자가 될 수 있도록, 최적화된 로드맵을 제공합니다
blueprint¶
- 실제 서비스할 웹서비스는 여러 플라스크 응용프로그램으로 구성될 수 있음
- 생성된 응용프로그램별로 다른 라우팅 규칙과 정적 파일/템플릿 폴더를 관리
- 블루프린트별 URL 규칙 설정
- 블루프린트별 URL 핸들러 설정(before_request등)
- 블루프린트별 정적 파일 및 템플릿 필터와 폴더 설정
In [ ]:
from flask import Blueprint
from imgdataservice.logger import Log
imgdataservice = Blueprint('imgdataservice', __name__,
template_folder='../templates', static_folder='../static')
본 자료와 같이 IT 기술을 잘 정리하여, 온라인 강의로 제공하고 있습니다
체계적으로 전문가 레벨까지 익힐 수 있도록 온라인 강의 로드맵을 제공합니다
쿠키와 세션¶
- 쿠키 (Pycharm: 04_flask_practices/cookie_html.py)
In [ ]:
from flask import Flask, request, make_response, render_template
app = Flask(__name__)
@app.route('/get')
def get_cookie():
username = request.cookies.get('username')
return render_template('variable.html', name=username)
@app.route('/add/<user>')
def add_cookie(user):
resp = make_response(render_template('simple.html'))
resp.set_cookie('username', user)
return resp
if __name__ == '__main__':
app.run(host="0.0.0.0", port="8080")