Flask

SMONGS·2025년 1월 5일

Flask에서 자주 사용되는 함수 정리

Flask는 Python 기반의 마이크로 웹 프레임워크로, 간단한 코드로 웹 애플리케이션을 빠르게 개발할 수 있습니다. Flask에서 자주 사용되는 주요 함수들과 그 활용 방법을 정리해 보았습니다.

1. Flask

Flask 클래스는 애플리케이션 객체를 생성하는 데 사용됩니다. 이 객체는 라우팅, 요청 처리, 응답 등을 관리합니다.

from flask import Flask

app = Flask(__name__)  # Flask 애플리케이션 객체 생성

@app.route('/')
def home():
    return "Hello, Flask!"

2. render_template

HTML 템플릿을 렌더링하는 데 사용됩니다.
Flask는 Jinja2 템플릿 엔진을 사용하며, HTML 파일과 함께 데이터를 전달할 수 있습니다.

from flask import Flask, render_template

app = Flask(__name__)

@app.route('/')
def home():
    return render_template('index.html', title="Home Page")

위 코드에서 index.html 템플릿에 title 변수를 전달합니다. 템플릿 파일은 기본적으로 templates 디렉토리에 저장됩니다.

3. request

클라이언트에서 서버로 들어오는 HTTP 요청 데이터를 다룰 때 사용됩니다.
URL 파라미터, 폼 데이터, 파일 업로드 등의 정보를 가져올 수 있습니다.

주요 속성:

  • request.args: URL 쿼리 파라미터
  • request.form: POST 요청의 폼 데이터
  • request.json: JSON 데이터
  • request.method: 요청 메서드(GET, POST 등)
  • request.files: 업로드된 파일
from flask import Flask, request

app = Flask(__name__)

@app.route('/submit', methods=['POST'])
def submit():
    name = request.form.get('name')  # 폼 데이터에서 'name' 값 가져오기
    return f"Hello, {name}!"

4. redirect

사용자를 다른 URL로 리다이렉트할 때 사용됩니다.
기본적으로 HTTP 응답 코드 302(Found)를 사용하지만, 다른 응답 코드를 지정할 수도 있습니다.

from flask import Flask, redirect

app = Flask(__name__)

@app.route('/')
def home():
    return redirect('/welcome')

@app.route('/welcome')
def welcome():
    return "Welcome to the site!"

5. url_for

라우트 이름을 기반으로 URL을 생성합니다.
하드코딩된 URL 대신, Flask 애플리케이션 내의 라우트 함수 이름을 사용하여 URL을 생성합니다.

기본 사용법

url_for(endpoint, **values)

  • endpoint: URL을 생성할 라우트 함수의 이름(문자열).
  • values: URL에 포함될 변수나 쿼리 파라미터를 딕셔너리 형태로 전달
from flask import Flask, url_for

app = Flask(__name__)

@app.route('/user/<username>')
def user_profile(username):
    return f"Profile page of {username}"

@app.route('/')
def home():
    profile_url = url_for('user_profile', username='SMONGS')
    return f"Go to {profile_url}"

위 코드에서 url_for('user_profile', username='SMONGS')는 /user/SMONGS URL을 생성합니다.

쿼리 파라미터 추가

url_for에 추가된 키워드 인자를 전달하면 쿼리 문자열이 자동으로 생성됩니다.

with app.test_request_context():
    print(url_for('user_profile', username='SMONGS', page=2, sort='desc'))

위 코드에서는 /user/SMONGS?page=2&sort=desc을 생성합니다.

정적 파일 URL 생성

Flask에서는 static 디렉토리에 저장된 정적 파일에 접근할 때도 url_for을 사용할 수 있습니다.

with app.test_request_context():
    print(url_for('static', filename='css/style.css'))

위 코드에서는 /static/css/style.css을 생성합니다.

외부 URL 생성

url_for에 external=True를 전달하면 절대 URL을 생성할 수 있습니다.

with app.test_request_context():
    print(url_for('user_profile', username='SMONGS', _external=True))

위 코드에서는 http://localhost/user/SMONGS을 생성합니다.

URL 리다이렉트와 연계

url_for은 동적으로 URL을 생성하기 때문에, 리다이렉트와 함께 사용하면 유용합니다.

from flask import Flask, redirect, url_for

app = Flask(__name__)

@app.route('/')
def home():
    return redirect(url_for('user_profile', username='SMONGS을'))

요약

Flask: 애플리케이션 객체 생성.
render_template: HTML 템플릿 렌더링.
request: 클라이언트 요청 데이터 처리.
redirect: URL 리다이렉트.
url_for: 라우트 이름을 기반으로 URL 생성.

profile
반갑습니당~😄

0개의 댓글