jinja template - extend block 이용하기

기존에는 {%include "head.html" %} 이런식으로 html 내 특정 부분, 즉 자주 사용하는 부분을 모든 페이지에 붙여서, include 지시자를 이용해서 가져오는 방식을 사용해 왔었다. 작은 프로젝트에서는 head.html 을 따로 두고 그 안에서 css 및 기타 `` 부분에 들어가는 코드를 작성해서 재활용 했었다. 그런데 최근에 body 에서 navigation bar 와 footer (상단, 하단)만 두고 가운데의 컨텐츠… Read More

heroku에서 flask 올리기

heroku 를 아주 간단히 설명하자면 마치 서버를 가지고 있는것 처럼 웹의 공간을 대행해주는 업체인데, 클라우드 어플리케이션 플랫폼이라고한다. 특이하게 git 을통해서 올리고 내리고 함으로써 소스를 서버에 반영할 수 가 있다. heroku 에서는 python 부분은 기본적으로 django를 기본으로 하고 있는데 heroku에서 제공하는 flask 가이드를 기본으로 해서 설명하겠다.  가입을 하고나서 toolbelt 라는것을 설치해야 한다. toolbelt 의 역할은 heroku… Read More

uwsgi 기본 사용법 정리

개요 WAS 서버의 일종, 현재 파이썬 서버 중 가장 좋은 성능으로 알려져 있다.  어플리케이션 컨테이너로 파이썬으로 만든 앱을 실행해 주는 역할, WSGI 을 지원한다.  설치 $ pip install uwsgi flask 와 연동 uwsgi –http 127.0.0.1:3031 –wsgi-file ./myflaskapp.py –callable app –processes 4 –threads 2 –stats 127.0.0.1:9191 ` ini 파일로… Read More

jinja template for 문에서 index 가져오기

보통 jinja template 에서 for 문을 사용하게 되면 아래와 같이 어떤 리스트 내에 아이템을 탐색하게 되고 리스트내에 아이템을 직접 가져오는데 index가 필요한 경우, 예를들면 특정 index 만 건너뛰고 싶은 경우가 있는데 그럴경우는 <span style="font-size: 11pt;">loop.index</span> 로 접근해서 index를 가져올수 있다. 아래의 코드를 보면 이해가 쉽다.  2013/10/… Read More

python response data for flask

flask 로 작업하는 경우가 두가지인데, view 를 만들거나 아니면 json 형태로 api 결과를 리턴하는 경우를 만들거나. 그런데 첫번쨰는 머 render_template 사용하는 거고, 두번째 api 결과의 경우 보통 공통적인 api 결과 형식/포맷을 만들어서 반환하기 마련이다. 여러가지 방식이 있겠지만, 선호하는 방식은 meta 와 data 로 나누는 것인데 meta 에는 code 가 들어가는데 http status code… Read More

flask logger decorator(데코레이터)와 함께 사용하기

기본로그 세팅하기 로그에 대한 부분이 늘 걱정이긴 한데, 사실 따로 python logger 클래스를 사용해서 로그는 남기는 클래스를 만들고 만드는 프로젝트 마다 붙여서 사용하는 식으로 했었는데 이번에 flask 에 있는 logger 를 이용해 보기로 했다. 기본적으로 다음과 같은 몇개의 핸들러를 제공하고 있다.  FileHandler  – 로그 메시지를 파일에 남긴다.  RotatingFileHandler – 로그메시지를 파일에 남기고, 특정수 이상이면 다음파일로 넘겨서 로그를… Read More

flask HTTP 에러 따로 메일로 받기

200 OK외에 다른 부분에 대해서 메일로 에러를 받아야 하는 경우가 있다. 물론 500 Server Internal Error 의 경우에는 로그를 보는게 제일 빠르지만, 저렇게 메일로 남기는 이유는 어떤 ip 에서 잘못된 접근을 하는지 보기 위해서 이다. 아래의 코드는 별다른 메일 서버 없이 리눅스 자체에 있는 sendmail 바이너리를 이용해서 호출하는 소스이다. 오히려 smpt 서버 설정하고 그런것 보다… Read More

(flask) Pluggable View, Class 에서 요청처리하기

Pluggable View 라고 말이 어려운데, 간단하게 말하자면 flask 는 기본적으로 url 과 함수의 맵핑으로 이루어져있다. 아래의 Quick Start 에서도 보면 알겠지만, url “/ ” 는 helloworld() 라는 함수에 맵핑이 되어 있어서 / 로 들어오게 되면 helloworld() 함수로 들어오게 된다.  사실 flask를 많이 써보신분들은 아시겠지만, 빠르게 개발할수 있다는 측면에서 매우 좋지만 view 즉, url 별로 보여줘야 하는 페이지가 증가하는… Read More