Django View와 같은 클래스 기반 Pluggable View MethodView
HTTP 메서드와 동일한 이름의 클래스 메소드에 매핑된다.
from flask.views import MethodView
class TestView(MethodView):
def post(self):
pass
def get(self):
pass
app.add_url_rule('/test', view_func=TestView.as_view('test'))
class TestView(MethodView):
def post(self):
pass
def get(self, test_id):
if test_id is None:
pass
else:
pass
def patch(self):
pass
def delete(self, test_id):
pass
test_view = TestView.as_view('test')
app.add_url_rule('/test', view_func=test_view, methods=['POST', 'PATCH'])
app.add_url_rule('/test', defaults={'test_id':None}, view_func=test_view, mehtods=['GET'])
app.add_url_rule('/test/<int:test_id>', view_func=test_view, methods=['GET', 'DELETE'])
path parameter가 있거나 여러 메소드가 있는 경우 위와 같이 규칙을 정의한다.
class TestView(MethodView):
decorators = [decorator]
클래스 선언 후 데코레이터 리스트를 지정해주면 하위에 정의된 모든 메소드에 데코레이터가 적용된다.
개별 메소드에서 데코레이터가 필요한 경우 메소드 위에 데코레이터를 달아준다.
class TestView(MethodView):
@decorator
def get(self):
pass