Flask의 두 축은 「라우팅」과 「템플릿」입니다.
라우팅은 URL → 파이썬 함수의 매핑이고, 템플릿은 HTML에 데이터를 채워 응답을 만드는 도구입니다.
URL 파라미터.
@app.route("/posts/") — int·str·float·path·uuid 같은 컨버터.
def show(post_id): ...
— 인자로 자동 전달.
정규식이 필요한 복잡한 URL은 컨버터 클래스를 직접 만듭니다.
쿼리스트링과 본문.
from flask import request.
request.args.get("q") — ?q=검색어.
request.form.get("name") — POST 폼.
request.json — JSON 본문.
request.files — 업로드된 파일.
Jinja2 템플릿.
templates/ 폴더에 HTML 파일을 두고 render_template("index.html", users=user_list)로 렌더링.
템플릿 안에서 {{ users[0].name }}로 데이터 출력, {% for u in users %} ...
{% endfor %} 같은 제어 구문 사용.
템플릿 상속이 강력합니다.
base.html에 공통 레이아웃 + {% block content %}{% endblock %}.
자식 템플릿이 {% extends "base.html" %} + {% block content %}내용{% endblock %}으로 부분만 채움.
헤더·푸터 중복 제거에 필수.
한 줄 요약
라우팅은 @app.route + URL 컨버터 + request 객체로, 템플릿은 Jinja2의 {{ }}·{% %} 문법 + extends/block 상속 패턴으로 처리합니다.
더 알아볼 것
- url_for로 URL 생성
- Jinja2 필터 — |safe, |length 등
- CSRF 토큰 처리