Flask는 Python 기반의 마이크로 웹 프레임워크로, 간단한 코드로 웹 애플리케이션을 빠르게 개발할 수 있습니다. Flask에서 자주 사용되는 주요 함수들과 그 활용 방법을 정리해 보았습니다.
Flask 클래스는 애플리케이션 객체를 생성하는 데 사용됩니다. 이 객체는 라우팅, 요청 처리, 응답 등을 관리합니다.
from flask import Flask
app = Flask(__name__) # Flask 애플리케이션 객체 생성
@app.route('/')
def home():
return "Hello, Flask!"
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 디렉토리에 저장됩니다.
클라이언트에서 서버로 들어오는 HTTP 요청 데이터를 다룰 때 사용됩니다.
URL 파라미터, 폼 데이터, 파일 업로드 등의 정보를 가져올 수 있습니다.
주요 속성:
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}!"
사용자를 다른 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!"
라우트 이름을 기반으로 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을 생성합니다.
Flask에서는 static 디렉토리에 저장된 정적 파일에 접근할 때도 url_for을 사용할 수 있습니다.
with app.test_request_context():
print(url_for('static', filename='css/style.css'))
위 코드에서는 /static/css/style.css을 생성합니다.
url_for에 external=True를 전달하면 절대 URL을 생성할 수 있습니다.
with app.test_request_context():
print(url_for('user_profile', username='SMONGS', _external=True))
위 코드에서는 http://localhost/user/SMONGS을 생성합니다.
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 생성.