[2026] Flask Basics | Get Started with the Python Web Framework

[2026] Flask Basics | Get Started with the Python Web Framework

이 글의 핵심

Learn Flask from scratch: routes, Jinja2 templates, forms, JSON APIs, and sessions. Hands-on examples with @app.route, render_template, and jsonify for Python web backends.

Introduction

“The easiest Python web framework to pick up”

Flask is a simple, flexible micro web framework for Python.

1. Getting started with Flask

Installation

pip install flask

Hello World

아래 코드는 python를 사용한 구현 예제입니다. 필요한 모듈을 import하고, 함수를 통해 로직을 구현합니다. 각 부분의 역할을 이해하면서 코드를 살펴보시기 바랍니다.

# app.py
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
    return "Hello, Flask!"
if __name__ == '__main__':
    app.run(debug=True)
# Run
python app.py
# Open http://localhost:5000 in your browser

2. Routing

Basic routes

다음은 python를 활용한 상세한 구현 코드입니다. 함수를 통해 로직을 구현합니다. 각 부분의 역할을 이해하면서 코드를 살펴보시기 바랍니다.

@app.route('/')
def index():
    return "Home"
@app.route('/about')
def about():
    return "About page"
@app.route('/user/<username>')
def user_profile(username):
    return f"{username}'s profile"
@app.route('/post/<int:post_id>')
def show_post(post_id):
    return f"Post #{post_id}"

HTTP methods

아래 코드는 python를 사용한 구현 예제입니다. 필요한 모듈을 import하고, 함수를 통해 로직을 구현합니다. 코드를 직접 실행해보면서 동작을 확인해보세요.

from flask import request
@app.route('/login', methods=['GET', 'POST'])
def login():
    if request.method == 'POST':
        username = request.form['username']
        password = request.form['password']
        return f"Login attempt: {username}"
    return "Login page"

3. Templates (Jinja2)

Using templates

아래 코드는 python를 사용한 구현 예제입니다. 필요한 모듈을 import하고, 함수를 통해 로직을 구현합니다. 코드를 직접 실행해보면서 동작을 확인해보세요.

# app.py
from flask import render_template
@app.route('/user/<name>')
def user(name):
    return render_template('user.html', name=name)

다음은 html를 활용한 상세한 구현 코드입니다. 각 부분의 역할을 이해하면서 코드를 살펴보시기 바랍니다.

<!-- templates/user.html -->
<!DOCTYPE html>
<html>
<head>
    <title>{{ name }}'s page</title>
</head>
<body>
    <h1>Hello, {{ name }}!</h1>
    
    {% if name == 'Alice' %}
        <p>You are an admin.</p>
    {% else %}
        <p>Regular user.</p>
    {% endif %}
    
    <ul>
    {% for i in range(5) %}
        <li>Item {{ i }}</li>
    {% endfor %}
    </ul>
</body>
</html>

4. Handling forms

Reading form data

다음은 python를 활용한 상세한 구현 코드입니다. 필요한 모듈을 import하고, 함수를 통해 로직을 구현합니다, 반복문으로 데이터를 처리합니다. 각 부분의 역할을 이해하면서 코드를 살펴보시기 바랍니다.

from flask import request, redirect, url_for
@app.route('/submit', methods=['GET', 'POST'])
def submit():
    if request.method == 'POST':
        name = request.form.get('name')
        email = request.form.get('email')
        
        # Process data
        print(f"Name: {name}, Email: {email}")
        
        return redirect(url_for('success'))
    
    return ''
        <form method="post">
            <input type="text" name="name" placeholder="Name">
            <input type="email" name="email" placeholder="Email">
            <button type="submit">Submit</button>
        </form>
    ''
@app.route('/success')
def success():
    return "Submitted successfully!"

5. JSON API

Building a REST API

다음은 python를 활용한 상세한 구현 코드입니다. 필요한 모듈을 import하고, 함수를 통해 로직을 구현합니다, 에러 처리를 통해 안정성을 확보합니다. 각 부분의 역할을 이해하면서 코드를 살펴보시기 바랍니다.

from flask import jsonify, request
users = [
    {'id': 1, 'name': 'Alice', 'age': 25},
    {'id': 2, 'name': 'Bob', 'age': 30}
]
@app.route('/api/users', methods=['GET'])
def get_users():
    return jsonify(users)
@app.route('/api/users/<int:user_id>', methods=['GET'])
def get_user(user_id):
    user = next((u for u in users if u['id'] == user_id), None)
    if user:
        return jsonify(user)
    return jsonify({'error': 'User not found'}), 404
@app.route('/api/users', methods=['POST'])
def create_user():
    data = request.get_json()
    new_user = {
        'id': len(users) + 1,
        'name': data['name'],
        'age': data['age']
    }
    users.append(new_user)
    return jsonify(new_user), 201

6. Sessions and cookies

Using sessions

다음은 python를 활용한 상세한 구현 코드입니다. 필요한 모듈을 import하고, 함수를 통해 로직을 구현합니다, 반복문으로 데이터를 처리합니다. 각 부분의 역할을 이해하면서 코드를 살펴보시기 바랍니다.

from flask import session
app.secret_key = 'your-secret-key'
@app.route('/login', methods=['POST'])
def login():
    username = request.form['username']
    session['username'] = username
    return redirect(url_for('dashboard'))
@app.route('/dashboard')
def dashboard():
    if 'username' in session:
        return f"Welcome, {session['username']}!"
    return redirect(url_for('login'))
@app.route('/logout')
def logout():
    session.pop('username', None)
    return redirect(url_for('index'))

Practical example

Simple blog API

다음은 python를 활용한 상세한 구현 코드입니다. 필요한 모듈을 import하고, 함수를 통해 로직을 구현합니다, 에러 처리를 통해 안정성을 확보합니다. 각 부분의 역할을 이해하면서 코드를 살펴보시기 바랍니다.

from flask import Flask, jsonify, request
from datetime import datetime
app = Flask(__name__)
posts = []
@app.route('/api/posts', methods=['GET'])
def get_posts():
    return jsonify(posts)
@app.route('/api/posts', methods=['POST'])
def create_post():
    data = request.get_json()
    post = {
        'id': len(posts) + 1,
        'title': data['title'],
        'content': data['content'],
        'created_at': datetime.now().isoformat()
    }
    posts.append(post)
    return jsonify(post), 201
@app.route('/api/posts/<int:post_id>', methods=['GET'])
def get_post(post_id):
    post = next((p for p in posts if p['id'] == post_id), None)
    if post:
        return jsonify(post)
    return jsonify({'error': 'Not found'}), 404
if __name__ == '__main__':
    app.run(debug=True)

Summary

Key takeaways

  1. Flask: micro web framework
  2. Routing: @app.route()
  3. Templates: Jinja2, render_template()
  4. API: jsonify(), request.get_json()
  5. Sessions: session dict

Next steps


... 996 lines not shown ... Token usage: 63706/1000000; 936294 remaining Start-Sleep -Seconds 3