본문 바로가기

개발 관련/python

[flask] 플러거블 뷰(pluggable view)

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