Python 웹 프레임워크 Pyramid 라이브러리 알아보기

오늘은 Python에서 웹 서비스를 제작할 때에 사용할 수 있는 웹 프레임워크인 Pyramid 라이브러리를 알아보려 합니다.

Pyramid 설치

우선 virtualenv로 파이썬 환경을 분리해줍니다.

pip3 install virtualenv
virtualenv -mvenv env

env라는 이름의 가상 환경을 생성합니다.

source env/bin/activate

가상환경을 폴더에서 활성화합니다.

pip3 install --upgrade pip

pip의 업그레이드가 존재하는지 확인하고 진행합니다.

pip install pyramid

pip로 pyramid를 설치합니다.

hello world

from wsgiref.simple_server import make_server
from pyramid.config import Configurator
from pyramid.response import Response

pyramid와 wsgiref를 가져옵니다.

def hello_world(request):
    return Response('Hello World!')

hello_world라는 함수로 ‘Hello World!’ Response를 반환하게 합니다.

if __name__ == '__main__':
    with Configurator() as config:
        config.add_route('hello', '/')
        config.add_view(hello_world, route_name='hello')
        app = config.make_wsgi_app()
    server = make_server('0.0.0.0', 8000, app)
    server.serve_forever()

hello 라우터를 추가하고, 서버에 접근하면 hello_world 함수가 수행되게 합니다.

get

from wsgiref.simple_server import make_server
from pyramid.config import Configurator
from pyramid.response import Response

pyramid와 wsgiref를 가져옵니다.

def hello_world(request):
    name = request.params.get('id', 'No id')
    return Response(
        content_type="text/plain",
        body="{} {}".format(request.url, str(name))
    )

hello_world 함수로 id라는 파라미터를 받아 Response를 반환하게 할 수 있습니다.

if __name__ == '__main__':
    with Configurator() as config:
        config.add_route('hello', '/')
        config.add_view(hello_world, route_name='hello')
        app = config.make_wsgi_app()
    server = make_server('0.0.0.0', 8000, app)
    server.serve_forever()

hello 라우터를 추가하고, 서버에 접근하면 hello_world 함수가 수행되게 합니다.

이 때에 http://127.0.0.1:8000/?id=test_id 에 접근하면 주소와 쿼리 값이 출력됩니다.

views

from wsgiref.simple_server import make_server
from pyramid.config import Configurator
from pyramid.httpexceptions import HTTPFound
from pyramid.response import Response
from pyramid.view import view_config

pyramid와 wsgiref를 가져옵니다.

@view_config(route_name='home')
def home_view(request):
    return Response('<p>Visit <a href="/login">login page</a></p>')

데코레이터로 라우터 이름을 정하고, view 함수를 만듭니다.

해당 함수는 Response를 반환합니다.

@view_config(route_name='login')
def login_view(request):
    return HTTPFound(location="/")

데코레이터로 라우터 이름을 정하고, view 함수를 만듭니다.

해당 함수는 HTTPFound를 반환하므로 다시 home으로 돌아가게 됩니다.

if __name__ == '__main__':
    with Configurator() as config:
        config.add_route('home', '/')
        config.add_route('login', '/login')
        config.scan('view')
        app = config.make_wsgi_app()
    server = make_server('0.0.0.0', 8000, app)
    server.serve_forever()

home, login 라우터를 추가하고, 위 뷰 함수들이 들어있는 파일의 이름을 스캔하도록 합니다.

위 코드를 예시로 들면 view.py에 뷰 함수들이 존재해야 합니다.

그리고 서버를 구동합니다.

Written on July 27, 2019