Flask
- Web APP Framework
- Django에 비해 가벼움
Flask란?
- Flask Homepage
- Micro Web Framework
- Web APP을 개발할 수 있도록 Web 서비스(Web Service)나 Web API(Web API) 등을 제공하고 Web 개발과 배포를 할 수 있는 특정 방법 제공
- Jinja, Werkzeug, Flask-SQLAlchemy 등 다양한 패키지와 라이브러리가 존재
Flask 시작
설치
1 |
|
폴더 생성
1 |
|
APP 생성
1 |
|
- CLI 실행
1 |
|
Route 기능
HTTP Request method
- 기본적인 Flask route decorator를 사용하면 GET, HEAD, OPTIONS method를 허용한다.
- 이외의 method를 통과하기 위해서는
methods
인수를 추가
1 |
|
- GET과 POST라는 method가 통과되지만 HEAD와 OPTIONS라는 method는 이제 사용이 불가능하다.
세부 엔드 포인트
1 |
|
Blueprint
- Route를 기능별로 나눠 Blueprint 기능을 사용한다.
- 폴더 구조
1 |
|
1 |
|
- ‘main’ : Blueprint의 명칭
- name : Blueprint의 import 이름
- url_prefix=’/main’ : URL 접두어 설정 (해당 Blueprint의 Route는 URL 앞에 ‘/main’이 자동으로 붙는다.)
1 |
|
- circular import 를 피하기 위해서 Flask 에서는 APP 팩토리 패턴을 추천
APP Factory
- circular import 를 피하기 위해서 Flask 에서는 APP 팩토리 패턴을 추천
- 말그대로 ‘공장’을 세우는 건데, 글로벌한 context에서 app을 선언하고 사용하게 되면 여러개의 APP을 동시에 사용하거나 파일의 일부분만 사용하게 될때도 문제가 발생할 수 있다.
- 이런 잠재적인 문제점을 피하기 위해 함수를 따로 만든다.
- 기본적인 패턴
1 |
|
Jinja
Flask의 Html 렌더링
- template이라는 폴더 생성 후 index.html을 만든다.
1 |
|
- 이러한 형태로 index.html을 보여줄 수 있다.
1 |
|
Jinja란?
- Web Template Engine : 맞춤형 Web 페이지를 자동으로 생산할 수 있도록 도와준다.
Jinja 표현
- 중괄호 ‘{}’fmf 많이 이용
1 |
|
- {% … %} : 구문에 사용(if, for 등).
- {{ … }} : 템플렛 결과 (html)에 출력할 표현(변수 등).
- {# … #} : 주석 처리할 때 사용
변수 넘기기
1 |
|
1 |
|
기능
객체 태그
1 |
|
1 |
|
if 구문
1 |
|
for 구문
1 |
|
1 |
|
loop 속성 | 설명 |
loop.index | 반복 순서 1부터 1씩 증가 |
loop.index0 | 반복 순서 0부터 1씩 증가 |
loop.first | 반복 순서가 처음일 경우 True 아니면 False |
loop.last | 반복 순서가 마지막일 경우 True 아니면 False |
1 |
|
상속
- 반복적으로 사용되는 부분을 하나로 묶어서 사용할 수 있게끔 해주는 기능
- {% extends %}
- {% block %} … {% endblock %}
자식 상속
- 부모 template의 경로를 자식 template 파일의 첫 줄에 적어주게 되면 Jinja의 template 엔진이 해당 파일을 이용
1 |
|
진자 블록
- 상속된 파일에서 변경할 수 있는 일종의 HTML ‘블록’을 지정
- 부모의 ‘head’ 블록 내용을 가져오고 싶을 때
1 |
|
Boostrap
1 |
|