[데이터 엔지니어링] Flask
2022. 4. 12. 17:23ㆍAI/Codestates
728x90
반응형
Flask 란?
- Flask는 마이크로 웹 프레임워크
- 웹 프레임워크는 웹 애플리케이션을 개발할 수 있도록 웹 서비스 나 웹 API등을 제공하고 웹 개발과 배포를 할 수 있는 특정 방법을 제공함
- 쉽게 말해 뭔가를 만들어낼 수 있는 도구 모음을 제공함
- Flask는 웹 프레임워크이긴 한데 '마이크로'가 앞에 붙음. 즉, 이러한 도구 모음들이 최소한의 크기로 줄여진 것
▶ 설치
$ pip install flask
▶ 폴더 생성
flask_app
└── __init__.py
▶ Flask 애플리케이션 생성
# __init__.py
from flask import Flask
app = Flask(__name__)
▶ CLI로 실행
$ FLASK_APP=flask_app flask run
▶ 라우트 추가
# __init__.py
from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return 'Hello World!'
Flask 의 HTML 렌더링
- 웹 브라우저에서 웹 페이지를 볼 때에는 HTML 이라는 마크업 언어를 사용하게됨
- Flask 에서도 HTML 파일들을 제공하면서 웹 페이지를 클라이언트에게 보여 줄 수 있음
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def index():
return render_template('index.html')
Jinja 란?
- Flask 에서 HTML 을 편리하게 렌더링 하는 함수를 제공을 하기 때문에 쉽게 웹 페이지를 클라이언트에 넘겨줄 수 있음
- Jinja 는 웹 템플릿 엔진 ( Web Template Engine )
- 템플릿 엔진은 맞춤형 웹 페이지를 자동으로 생산할 수 있도록 도와줌
▶ Jinja 표현
<body>
<h1>{{ title }}</h1>
</body>
- {% ... %} : 구문에 사용됨 ( if, for 등 )
- {{ ... }} : 템플릿 결과 ( HTML ) 에 출력할 표현 ( 변수 등 )
- {# ... #} : 주석 처리할 때 사용됨
▶ Flask 에서 Jinja 로 변수 넘기기
(... 생략 ...)
@app.route('/')
def index():
apple = 'red'
apple_count = 10
return render_template('index.html', fruit_color=apple, number=apple_count)
(... 생략 ...)
<body>
<h2>Apple is {{ fruit_color }}</h2>
<h2>{{ number }} 개의 과일이 있습니다.</h2>
</body>
(... 생략 ...)
▶ Jinja 기능들
■ 객체 태그
{{ var }}
{{ fruits.apple }}
{{ vegetables[0] }}
■ if 구문
{% if True %}
<h1>It is True</h1>
{% elif False %}
<h1>It is False</h1>
{% else %}
<h1>It is not True</h1>
{% endif %}
■ for 구문
{% for item in item_list %}
<p>{{ item }}</p>
{% endfor %}
loop | 속성설명 |
loop.index | 반복 순서 1부터 1씩 증가 |
loop.index0 | 반복 순서 0부터 1씩 증가 |
loop.first | 반복 순서가 처음일 경우 True 아니면 False |
loop.last | 반복 순서가 마지막일 경우 True 아니면 False |
{% for item in item_list %}
<p>인덱스 : {{ loop.index0 }}, 이름 : {{ item }}</p>
{% endfor %}
▶ Jinja 상속
- {% extends %}
- {% block %} ... {% endblock %}
■ 자식 상속
{% extends "base.html" %}
{% block title %}Index{% endblock %}
{% block head %}
{{ super() }}
{% endblock %}
{% block content %}
<h1>Index</h1>
<p class="important">
Welcome to my awesome homepage.
</p>
{% endblock %}
■ 진자 블록
<head>
{% block head %}
<title>{% block title %}{% endblock %} - My Webpage</title>
{% endblock %}
</head>
{% extends "base.html" %}
{% block title %}Index{% endblock %}
{% block head %}
{{ super() }}
<h1>자식 블록에서 출력한 h1 입니다.</h1>
{% endblock %}
(... 생략 ...)
Bootstrap
- 공식문서
Bootstrap
세계에서 가장 인기있는 HTML, CSS, JS 라이브러리.
getbootstrap.kr
728x90
반응형
'AI > Codestates' 카테고리의 다른 글
[데이터 엔지니어링] 시간과 부호화 (0) | 2022.04.15 |
---|---|
[데이터 엔지니어링] 배포와 대시보드 (0) | 2022.04.15 |
[데이터 엔지니어링] Docker (0) | 2022.04.12 |
[Day 54] Sprint Review (0) | 2022.04.10 |
[데이터 엔지니어링] NoSQL (0) | 2022.04.07 |