본문 바로가기

Technical Docs/Web Application

Python Flask로 라우팅 관리해보기

사실 나는 Python 웹 프레임워크중에 장고만 써봤지 Flask는 한번도 안써봤다. 근데 뭐 내생각에는 그냥 테스트용 또는 빠르게 웹 개발이 필요할 때 써먹을만 한거 같다. 노드와 비슷하게 라우팅을 바로바로 함수에 덧붙이다보니 해당 부분은 가시성이 있는데, 이게 파이썬이다 보니 아무리 깔끔하게 짜도 막상 다시보면 더럽다.... 내가 만들때까지만 개편함...

 

오늘은 그 중에서도 Blueprint 라는 라이브러리를 이용해서 라우팅 하는 방법을 정리해보고자 한다.

우선 어떤 상황에서 써먹을지 생각해보자. 우리는 아래와 같은 라우팅 경로가 필요하다고 가정해보자

/admin/bintoascii
/admin/asciitobin
/admin/hextobin
/admin/bintohex

/user/jpgtopdf
/user/pdftojpg
/user/pngtojpg

/tester/newtest
/tester/xxx
/tester/yyy

위와 같은 라우팅 경로가 필요할 때, 물론 하나하나 직접 만들어 주는 방법도 있다.

admin 폴더를 만들어서 그 안에 관련 함수를 라우팅하는 파이썬파일 하나 만들고, 해당 라우팅을 통해 실제 서비스 동작을 하는 파이썬파일만들고... 뭐 이런식으로도 충분히 만들 수 있다. 근데 뭐든 유지보수와 비슷한건 한곳에서 묶어서 관리하는게 낫지 않은가?

그래서 blueprint를 사용한다.

 

그러면 이제 각 url_prefix 마다 묶어줄 준비를 한다. (project/views/admin.py)

from flask import Blueprint

tie = Blueprint('main',__name__,urlprefix='/admin')

@tie.route('/bintoascii')
def bintoas():
	return 'hello this is bintoascii function'

이렇게 admin.py 로 만들던 무튼 prefix 마다 묶어준다.

 

그리고 다음 단계에서 위에 만든 Blueprint를 등록한다.

뭐 보통 __init__.py 또는 app.py에 등록하는거 같다. 사실 나도 플라스크 첨이라 어디 등록하는지 확실히 모르겠다. 앱을 실행시키는 곳에 등록하는 거 같음 ^^;;

(project/app.py)

from flask import Flask

def create_app():
	
    app = Flaks(__name__)
    
    from .views import admin
    app.register_blueprint(admin.tie)
    
    return app

 

앗 완성이다.

 

이제 등록해준대로 웹 페이지에 접속하면 정상적으로 라우팅이 나눠지는걸 확인할 수 있다.

그래도 난 플라스크로 너무 큰 웹을 만드는건 비추다... 내가 소스코드 진단 업무하면서 진짜 php 급으로 코드가 뭔가 더럽다... 가독성이 없다고 해야하나.... 자바가 그리울지경... 물론 뭐 고수가 보면 아닐수도 있겠지만....

'Technical Docs > Web Application' 카테고리의 다른 글