[Flask] 2. 라우팅과 템플릿 사용하기
이전 게시글에서는 Flask로 간단한 웹 애플리케이션을 만들어보았습니다. 이번 글에서는 Flask의 라우팅과 템플릿 기능에 대해 알아보도록 하겠습니다. 해당 기능을 사용하여 조금 더 동적인 웹 애플리케이션을 개발할 수 있습니다.
1. 라우팅(Routing) 이해하기
라우팅은 웹 애플리케이션에서 사용자가 요청한 URL을 특정 함수와 연결하는 과정입니다. Flask에서는 '@app.route()' 데코레이터를 사용하여 URL 경로와 그에 대한 처리 함수를 정의합니다.
다양한 라우팅 만들기
앞선 게시글에서는 기본으로 '/' 경로에 라우팅을 구현했었는데요. 이번에는 추가적인 라우트를 만들어보겠습니다. 첫 번째 게시글에서 만들었던 'app.py'를 다음과 같이 수정합니다.
from flask import Flask
app = Flask(__name__)
@app.route('/')
def home():
return "Welcome to the Home Page!"
@app.route('/about')
def about():
return "This is the About Page!"
@app.route('/contact')
def contact():
return "This is the Contact Page!"
if __name__ == '__main__':
app.run(debug=True)
'/about'과 '/contact' 경로에 대한 라우팅을 추가하였습니다. 각 경로에 대해서 각자 다른 메시지를 반환할 수 있게 설정하였습니다.
다음과 같이 '127.0.0.1:5000/contact'에 접속하면 Contact Page라는 메시지가 표시되는 것을 확인할 수 있습니다.
2. 템플릿 사용하기
Flask에서는 HTML 파일을 템플릿을 사용하여 동적인 웹 페이지를 만들 수 있습니다. 이를 위해서 Flask에서는 'render_template' 함수를 사용합니다.
템플릿 디렉토리 구조
프로젝트 폴더에 'templates'라는 폴더를 새롭게 만들고 그 안에 'about.html'을 생성합니다.
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>About Page</title>
</head>
<body>
<h1>About Page</h1>
<p>이곳은 About 페이지입니다.</p>
</body>
</html>
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def home():
return "Welcome to the Home Page!"
@app.route('/about')
def about():
return render_template('about.html')
@app.route('/contact')
def contact():
return "This is the Contact Page!"
if __name__ == '__main__':
app.run(debug=True)
'render_template' 함수를 사용하여 '/about' 경로에 접속했을 때 'about.html' 템플릿을 렌더링하도록 설정했습니다. '127.0.0.1:5000/about'에 접속하면 다음과 같이 페이지를 출력합니다.
이번 게시글에서는 라우팅과 템플릿의 기본 사용법을 배워봤습니다. 다음 글에서는 Flask의 폼 처리와 데이터베이스 연동에 대해 알아보려고 합니다. 질문이나 궁금한 점이 있다면 댓글로 남겨주세요. 감사합니다!