[Flask] MethodView

6479 단어 FlaskFlask

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'))

URL Route

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

좋은 웹페이지 즐겨찾기