View
플라스크는 기본적으로 데코레이터와 함수 기반으로 API를 작성하며, 이를 함수 기반 뷰(functional-based view)라 한다.
플러거블 뷰(pluggable view)는 장고의 클래스 기반 뷰에서 영향을 받아 만들어졌으며 플라스크 0.7 버전에 추가되었다.
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/users')
def user_list():
users = []
return render_template('users.html', users=users)
위의 코드를 플러거블 뷰로 바꿔보겠다.
일단 View 클래스를 상속받고, dispatch_request를 통해 API를 구현할 수 있다.
app.add_url_rule을 통해 URL을 등록하고, as_view() 함수에 엔드포인트 이름을 전달하여 구현한다.
from flask import Flask, render_template
from flask.views import View
app = Flask(__name__)
class UserList(View):
methods = ['GET', 'POST'] # GET, POST, PUT, DELETE
def dispatch_request(self):
users = []
return render_template('users.html', users=users)
methods 변수는 허용할 메서드를 지정할 수 있다.
MethodView
MethodView는 restful API에 특화되어 있다.
from flask import Flask
from flask.views import MethodView
app = Flask(__name__)
class UserView(MethodView):
def get(self, user_id):
if user_id is None:
return 'all'
else:
return 'one'
def post(self):
return 'post'
def put(self, user_id):
return 'put'
def delete(self, user_id):
return 'delete'
user_view = UserView.as_view('users')
app.add_url_rule('/users', defaults={'user_id': None}, view_func=user_view, methods=['GET'])
app.add_url_rule('/users', view_func=user_view, methods=['POST'])
app.add_url_rule('/users/<int:user_id>', view_func=user_view, methods=['GET', 'PUT', 'DELETE'])
MethodView 클래스는 get(), post(), put(), delete() 함수를 제공한다. get은 유저 얻기, post는 유저 생성, get은 특정 유저 얻기, put은 특정 유저 수정, delete는 특정 유저 삭제의 역할을 한다.
[참고] 처음 배우는 플라스크 웹 프로그래밍
'개발 관련 > python' 카테고리의 다른 글
[crawling] HTTP error 403 (0) | 2022.01.12 |
---|---|
[flask] 블루프린트(blueprint) (0) | 2022.01.05 |
[flask] 리다이렉션과 에러 (0) | 2022.01.05 |
[difflib] 두 문자열 비교하기 (0) | 2021.12.20 |
[haversine] 위경도 거리 구하기 (0) | 2021.12.20 |