on
Flask
Flask
Flask는 파이썬을 사용해 작지만 간단하고 유연성있는 웹 어플리케이션을 만들 수 있습니다 :)
1. Flask
Micro Web Framwork
웹 프레임워크란 웹 어플리케이션을 개발할 수 있도록 Web Service와 Web API 등을 제공하고 웹 개발 과 배포를 할 수 있는 특정 방법을 제공하는 프로그램입니다.
Flask는 그중에도 Micro '최소한의 도구를 모아놓은 웹 프레임워크` 입니다.
#Django(장고)는 파이썬을 사용한 난이도있고 heavy한 웹 어플리케이션을 제작할 수 있는 또다른 프로그램입니다.
Flask 공식 사이트
flask.palletsprojects.com/en/1.1.x/
2. Flask 파이썬 설치
$ pip install Flask
Flask 사용법
quickstart
1. 폴더와 파일 생성
flask_app └── __init__.py
2. 파일 안에 코드 작성
#__init__.py from flask import Flask app = Flask(__name__) @app.route('/') def hello_world(): return 'Hello, World!'
1) Flask 불러오기
2) 클래스 인스턴스 만들고 인수에 애플리케이션 모듈(또는 패키지)의 이름 입력하기
__name__ : 응용프로그램으로 시작되었을 때
__main__ : 모듈로 가져왔을 때
3) route() : 루트 주소 설정. 주소가 어떻게 끝나는지 알려주는 엔드포인트(endpoint)
4) 사용자의 브라우저에 표시하려는 메시지 반환하는 함수
3. CLI 실행
FLASK_APP=flask_app flask run
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit) 문구가 실행되면 localhost:5000 사이트 접속
4. ROUTE 기능
1) 라우팅
@app.route('/') def index(): return 'Index Page' @app.route('/hello') # URL 루트가 /hello 로 끝남 def hello(): return 'Hello, World'
2) 세부 엔드포인트
작업하는 username, index 등에 따라 해당 번호가 포함된 URL 리턴
엔드포인트 <변수값> 사용
from markupsafe import escape @app.route('/user/') def show_user_profile(username): # show the user profile for that user return 'User %s' % escape(username) @app.route('/post/') def show_post(post_id): # show the post with the given id, the id is an integer return 'Post %d' % post_id @app.route('/path/') def show_subpath(subpath): # show the subpath after /path/ return 'Subpath %s' % escape(subpath) @app.route('/index/') def index_number(num): return 'Welcome to Index %i' % int(num) @app.route('/index/', defaults={ 'num' : 0 }) # defalts 값 적용 @app.route('/index/') def index_number(num): return 'Welcome to Index %i' % int(num)
3) HTTP 메소드
URL에 액세스 할 떄 다른 HTTP method 사용
from flask import request @app.route('/login', methods=['GET', 'POST']) def login(): if request.method == 'POST': return do_the_login() else: return show_the_login_form()
5. 블루포인트(bluepoint) 기능
route가 많이 생성될 때 하나의 파일로 모아서 사용하지 않고 기능별로 나눠서 사용.
# 또다른 폴더 생성 flask_app ├── __init__.py └── routes └── user_routes.py # user_routes.py from flask import Blueprint bp = Blueprint('user', __name__, url_prefix='/user') @bp.route('/') def index(): return 'User index page' # __init__.py 파일에서 블루프린트 파일 불러와 사용하기 from flask import Flask from flask_app.routes import user_routes app = Flask(__name__) app.register_blueprint(user_routes.bp) @app.route('/') def index(): return 'Hello World!'
'user' : 블루프린트의 명칭 지정
__name__ : 블루프린트 모듈의 import 이름 지정
url_prefix='/user' : URL 접두어 설정 (URL의 루트 앞에 '/user' 가 자동으로 붙게 됩니다.
웹 사이트 localhost:5000/user 에는 'User index page'가 출력됩니다.
웹 사이트 localhost:5000/ 에는 'Hello World!'가 출력됩니다.
6. Application Factory
프로젝트가 커지고 파일들이 많아지면 import를 사용할 일이 많아질 것 입니다.
파이썬에서의 circular import를 피하기 위해서 Flask는 어플리케이션 팩토리 패턴을 추천하고 있습니다.
Application Factiory는 '공장'을 세우는 것처럼 함수 안에 어플리케이션을 생성해 주어 사용할 수 있습니다.
블루프린트도 함수 내에서 import 해온 뒤 어플리케이션에 추가해줍니다.
#__init__.py from flask import Flask def create_app(): app = Flask(__name__) from yourapplication.views.admin import admin from yourapplication.views.frontend import frontend app.register_blueprint(admin) app.register_blueprint(frontend) return app if __name__ == "__main__": app = create_app() app.run()
공유하기 글 요소 저작자표시
from http://gggggeun.tistory.com/84 by ccl(A) rewrite - 2021-03-22 16:26:16