Flask의 기능이 점점 늘어날수록, 자연스럽게 코드의 양이 증가한다.
그렇게 때문에 Blueprint를 사용해서 길어진 코드를 모듈화해주어 수정 개발과 유지보수에 용이하게 코드를 관리할 수 있다.
Blueprint를 사용하지 않았을 때
app.py
from flask import Flask, jsoinfy
app = Flask(__name__)
@app.route("/", methods=["GET"])
def home_route():
return jsonfiy('home')
@app.route("/first", methods=["GET"])
def first_route():
return jsonfiy('first page')
@app.route("/second", methods=["GET"])
def second_route():
return jsonfiy('second page')
@app.route("/third", methods=["GET"])
def third_route():
return jsonfiy('third page')
#...생략
if __name__=='__main__':
app.run(debug=True)
blueprint사용했을 경우
app.py
from flask import Flask
from first_api import bp
app = Flask(__name__)
app.register_blueprint(bp)
if __name__=='__main__':
app.run(debug=True)
first_api.py
from flask import Blueprint, jsoinfy
bp = Blueprint('bp', __name__)
@bp.route('/first', methods=['GET'])
def first_route():
return jsonfiy('first page')
@bp.route("/second", methods=["GET"])
def second_route():
return jsonfiy('second page')
Jinja2는 python에서 가장 많이 사용되는 템플릿이다.
서버에서 받아온 데이터를 효과적으로 보여주고 비교적 간략한 표현으로 데이터를 가공할 수 있다.
Jinja2 Template에서 데이터 넘겨주기-단일변수
app.py
@app.route("/")
def home():
return render_template(
'index.html',
data = 'hello'
)
index.html
<html>
<head>
<title>jinja example</title>
</head>
<body>
{{ data }}
</body>
</html>
Jinja2 Template에서 데이터 넘겨주기-list
app.py
@app.route("/")
def home():
my_list = [1,2,3,4,5]
return render_template(
'index.html',
data = my_list
)
index.html
<html>
<head>
<title>jinja example</title>
</head>
<body>
{{ data }}
{% for d in data %}
{{ d }}
{$ endfor $}
</body>
</html>
Jinja2 Template에서 데이터 넘겨주기-dictionary
app.py
@app.route("/")
def home():
my_data = {'name': 'elice'}
return render_template(
'index.html',
data = my_data
)
index.html
<html>
<head>
<title>jinja example</title>
</head>
<body>
{{ data.get('name') }}
</body>
</html>